потому что WebAssembly не только для C++ и Rust. Номинально UTF16 кодировку для строк используют такие языки как C#, Dart, Java, AssemblyScript и некоторые другие менее известные языки. UTF16 так же используют браузеры для DOM Api и не только. Ну и что бы не делать перекодировку (иногда по два раза) имеет смысл на ряду с UTF8 добавить так же и UTF16. Более того text-процессинг UTF16 юолее производительный чем с UTF8 так что кроме интеропа может даже иногда иметь смысл временно конвертировать текст из UTF8 в UTF16 а потом обратно