Immagino che la ragione sia veloce, array come l'accesso al personaggio all'indice, ma alcuni caratteri non si adattano a 16 bit, quindi non funzionerebbe ...
Quindi, se devi comunque gestire casi speciali, perché non usare UTF-8?
Per la parte principale, per semplicità e semplicità di prova del futuro. Se è stata una ragione sbagliata e il modo sbagliato per farlo è una domanda diversa.
Puoi vedere alcune ragioni dietro alcune delle loro decisioni di progettazione in questo documento sulla transizione del 2004 a Java 5 e UTF-16, che spiega anche alcune delle carenze: Caratteri supplementari nella piattaforma Java e vedi Perché l'ecosistema Java utilizza diverse codifiche in tutto lo stack? .
Per maggiori dettagli sulle insidie dell'uso di UTF-16, e perché UTF-8 è probabilmente un'opzione migliore in generale, vedi Se UTF-16 deve essere considerato dannoso? e UTF-8 Ovunque manifesto.