Fala Felipe, beleza?
Cara existem alguns pontos a se considerar sobre essa questão dos ícones em botões. Pelo que conheço, não existe um padrão determinado, mas um ponto importante que eu costumo pensar é na acessibilidade.
Caso o ícone não traga algum sentido extra ao conteúdo do botão, sendo apenas algo 'decorativo', o ideal é adicionar via background, pois os leitores de tela não consideram essa informação. Da forma como você sugeriu, o after é inserido no html, e acaba por ser considerado nos leitores de tela.
Outro ponto importante é que o ::after pode precisar de mais configurações (por ser um pseudo-elemento), sendo necessário tratar ou resetar alguns parametros.
Mas como eu falei no começo, não existe de fato um padrão, as duas formas são aceitáveis, depende mais da forma como você vai decidir tratar o seu código.
Espero ter ajudado!
Bons estudos...