In addition to this, usernames are meant to be used in @mentions, and so the expectation is that usernames will be straightfoward and easy to type; that’s why we only allow ASCII characters by default (though that can be expanded to unicode by the unicode_usernames setting, though still no punctuation).
Note that that migration script uses the non bulk migration script base class, which does this with each user record generated by the method you linked:
which strips any invalid characters from usernames.
There are many places in the code that assume certain things about usernames (@mention parsing, changing usernames, etc), which is the reason why we enforce these restrictions.
Like Stephen says, usernames are not the place to show user personality; the name and flair fields are ![]()