Why not utf-8-sig, though? It handles optional BOMs. Had to fix a script last week that choked on it.
Because changing Python to silently prefixing all IO with an invisible BOM isn’t a good idea.
The expectation isn't for it to generate BOM in the output, but to handle BOM gracefully when it occurs in the input.