Because changing Python to silently prefixing all IO with an invisible BOM isn’t a good idea.
https://docs.python.org/3/library/codecs.html
The codec you're imagining would also make reading a file and writing it back change the file if it contains a BOM.