Because there's an expected built-in behaviour to these elements.
> It is accessible, semantically correct, and follows accepted design conventions.
There's nothing accepted about disguising a link as a button. Especially when it literally does no action except, you know, linking to a different page.
Though, of course, there are ambiguous situations, especially in the context of PWAs. But code examples are not an ambiguous situation.
<a class="btn btn-primary" href="/new">
New
</a>
Below the heading there is a list of repos which had a recent activity by you. Each list item has a link to an that repo. <a class="dashbord-underlined-link" href="/namespace/repo">
namespace/repo
</a>
There is a substantial difference between these two links. One takes you to a location, the other one starts a process which ends with an action.As a user you are not going to be clicking the “New” button everyday. Maybe once a month, maybe once a year. So you are likely not going to remember where it is from the last time you clicked it. If you don’t find it when you need it, you will get frustrated. It needs a lot of visual weight relative to the other links in this nav section. Giving the same weight as a button is a reasonable decision.
edit: I said “form”, but I meant page. Forms actually use buttons!