Vale a pena ressaltar que nomes e nomes de usuário não são a mesma coisa. Nomes de usuário são usados em caminhos de URL, por exemplo:
https://meta.discourse.org/u/pfaffman/summary
Um ponto de exclamação não é um caractere válido em uma URL, enquanto caracteres como ? & têm propósitos especiais na estrutura da URL e, portanto, também não podem fazer parte de um nome de usuário. Isso não é específico do Discourse, qualquer sistema que use o nome de usuário na estrutura da URL tem que respeitar isso.
Um nome de usuário não pode conter um ponto de exclamação, mas o nome pode, o que você pode priorizar na interface do usuário.