正確な数値はわかりませんが、日本語の場合、Shift_JIS は UTF-8 よりも 1 文字あたりの平均バイト数が少なく、EUC-JP も日本語テキスト用に最適化されているためです。ただし、それらは Unicode と同じコード ポイントのスペースをカバーしていないため、質問に対する正しい答えではない可能性があります。
UTF-16 は、日本語の文字 (1 文字あたり 3 バイトではなく 2 バイト) の場合は UTF-8 よりも優れていますが、7 ビット文字が多い場合は UTF-8 よりも劣ります。コンテキストに依存します。技術的なテキストには、1 バイトの範囲に多くの文字が含まれる可能性が高くなります。古典的な日本語のテキストには何もないかもしれません。
トランスポートの場合、データを圧縮 (gzip、bz2) できる場合、エンコーディングはそれほど重要ではないことに注意してください。Unicode のアルファベットのコード ポイントは互いに接近しているため、圧縮データでは非常に短い表現を持つ一般的なプレフィックスが期待されます。
UTF-8 は通常、UTF-32 や UTF-16 よりもコンパクトであり、ASCII または ISO-8859-1 NUL で終了する文字列を「期待」する char* の関数と互換性があるため、メモリ内での表現に適しています。ただし、インデックスによる文字へのランダム アクセスが必要な場合は役に立ちません。
非 BMP 文字を気にしない場合、UCS-2 は常に 1 文字あたり 2 バイトであるため、ランダム アクセスを提供します。しかし、それは「Unicode」の意味によって異なります。