Не знаю официальной причины.
Но я не вижу необходимости в этом.
Имея потоки определенного типа, вы жестко программируете их использование. Я бы предпочел потоки, которые являются общими (обрабатывать байты), которые затем можно настроить для вывода в определенный формат. Как будто они сейчас работают.
Так что внутренне я хочу использовать строки UTF16. Но на выходе я хочу сериализовать их в UTF8 для хранения. Для этого я просто хотел бы создать нормальный поток, наполнив его локалью, которая знает, как преобразовать в UTF16 -> UTF8, тогда все, что нужно сделать потоку - это обработать байты.
Поток понимает формат на диске, так что вам очень мало. Очень удобно иметь локаль, которая может конвертировать различные форматы (на устройстве во внутренний и наоборот).