В плане внешнего вида - разницы вообще никакой.
Зависит от того, как вы будете реализовывать действие на нажатие элемента. Если уверены, что будет много джаваскрипта или же будет использован какой нибудь фреймворк - то можно активно использовать button. Если же джаваскрипта мало или вовсе нет, то лучше через 'a'.
Чтобы таких вопросов возникало меньше, важно понимать, что каждый браузер имеет право интерпретировать каждый ваш тэг или любой html, css, js код по своему. А функционал тэга 'a' - это соглашение в html