Those characters are disallowed because they would cause delimiting issues for the shell/sed/awk/perl/php crap they are using to process those files, or db injection attacks.
A proper password hashing function takes any byte string.
Except it really isn't, while stupid this is hardly uncommon in software that does hashing.
There are, actually, a couple of reasonable UX reasons for placing some restrictions on the characters someone can use in a password. If you hope that they will be able to enter the same password from another device later, you want to encourage them not to exploit all the wonderful input possibilities afforded by their plug-in emoji keyboard on their phone. Sadly I don't think this kind of reason underlies any restrictions I've ever seen in the wild.
I've reported bugs in Google products before, but it's usually just not worth chasing a company down for something that doesn't really impact me, and often they'll just refuse to acknowledge the problem or refuse to fix it anyway. E.g. the issue I described at https://news.ycombinator.com/item?id=10478264. Since then I usually won't bother unless it's hard to work-around or the company has a known bug-tracker.
I didn't really know much about web dev or security at the time, but thinking back to it now, there is no safe way they could have done that.
They probably didn't though.