Ça remonte effectivement à une période où Unicode n'envisageait pas plus de 65536 caractères. Java et Qt sont tombés dans le même piège pour la même raison.
Cela dit, l'UTF-16 en lui-même n'est pas si lourd que ça en pratique (le seul risque, c'est d'oublier de gérer les paires de surrogats), ce qui est lourd, c'est la conversion entre UTF-16 (Qt) et UTF-8 (APIs C ISO/POSIX, fichiers texte).