Ну, якоря не обязательно ссылки. Вот почему валидатор не задыхается. Внешние привязки содержат HREF, конечно, но внутренние привязки просто имеют атрибут name, на который можно ссылаться, поместив #name в URL.
Теперь вопрос о том, следует ли размещать кнопку в ссылке, является другой проблемой. DOM использует всплывающее окно событий, поэтому технически кнопка должна реагировать на нажатие до того, как это сделает ссылка. Но я не знаю, переводится ли это одинаково во всех браузерах.