The apps I'm thinking of write bytes, not strings. If you enforced UTF-16 compatibility, they'd have to say what encoding they're using (they don't) or convert it themselves (they don't) - and changing either of these would require at least an application recompile.
The reason they currently work is because bytes out == bytes in, so they can read the files they create, despite what mojibake the user sees.
The reason they currently work is because bytes out == bytes in, so they can read the files they create, despite what mojibake the user sees.