Well, the first script works if you don't open the files as binary files (see my "patch") -- and if you don't you get a sane error when you try to open a binary file. So they're different, but I still say it's not so clear that one is broken, one is not.
I'm also not clear where all the comments on filenames comes from, but maybe they just happen to work in my case?
[edit: see my other comment on treating stdin/out as binary from python3]
"cat - concatenate files and print on the standard output"
Cat has quite a few options that clearly deal with text files: --number-nonblank, --show-ends, --number, -show-tabs, --show-nonprinting, --squeeze-blank ...
BSD cat[1] is a little more conservative, but it's not entirely clear cut that when printing to standard output (or reading from standard input) you want binary mode. And silently copying a binary stream to a text stream does sound like a bug. Even if that is the expected behaviour of standard "cat".
I'm also not clear where all the comments on filenames comes from, but maybe they just happen to work in my case?
[edit: see my other comment on treating stdin/out as binary from python3]