Por que o C# usa UTF-16 para strings?
Perguntei para o Eric Lippert por que o C# usa UTF-16, já que não é compacto como o UTF-8 nem com comprimento fixo como o UTF-32.
Em resumo, por compatibilidade com o VB e COM. Você pode ler a resposta completa no blog da Coverity