_ - . são caracteres permitidos, NAME_REGEX verifica se o nome de usuário contém apenas caracteres especificados. Os desenvolvedores de distribuição definem se outros caracteres forem negados. O Ubuntu, por exemplo, proíbe o uso de . por padrão.
Adicionar essa restrição evita a interferência com outras ferramentas do sistema, o que pode interpretar caracteres especiais. Pense na variável $PATH , quando você tiver um usuário com o nome my:user e adicione seu diretório pessoal a $PATH :
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /home/my:user/bin
Os diretórios /home/my e user/bin provavelmente não existiriam. Além disso, /etc/passwd teria dois : a mais do que o necessário.
Editar:
O adduser (versão 3.110) do Debian usa /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/ para verificar nomes de usuários, _ é permitido desde que NAME_REGEX não o proíba.