Tecnicamente, sim. Se está certo ou errado... sem comentários.
De qualquer forma, a segurança do banco de dados é dividida em 2 funções:
- db_accessadmin para gerenciar usuários (ou permissão "ALTER ANY USER" como você mencionou)
- db_securityadmin permite que você gerencie associações de funções e permissões de objetos (ou "permissão ALTER ANY ROLE)
Isso é mencionado para sp_addrolemember .
Na verdade, você está alterando a função, não o usuário, executando sp_addrolemember para que "ALTER ANY ROLE" seja suficiente sem ter direitos totais de db_owner.