O UTF-16 (ou UCS-2) é altamente hostil para as cadeias terminadas em nulo usadas pela biblioteca padrão C e pelo POSIX ABI. Por exemplo, os argumentos da linha de comando são terminados por NULs (bytes com valor zero) e qualquer caractere UTF-16 com valor numérico < 256 contém um zero byte, portanto, qualquer seqüência das letras inglesas usuais seria impossível de representar em UTF-16 em um argumento de linha de comando.
Isso, por sua vez, significa que os utilitários precisariam ter entrada em algum outro formato (digamos, UTF-8) e converter em UTF-16; ou eles precisariam tomar sua opinião de alguma outra forma. A primeira opção exigiria que todos esses utilitários contivessem (ou vinculassem) o código para a conversão, e o segundo tornaria a interface desses programas com outros utilitários um pouco difícil.
Dadas essas dificuldades, e o fato de que o UTF-8 tem melhores propriedades de compatibilidade com versões anteriores, eu acho que poucos se importam em usar o UTF-16 o suficiente para serem motivados a criar ferramentas para isso.