"Just in case" and "I read that we should" is how we got <button role="button">.
Read that again.
A button with a role of button when the browser already knows it's a button. It has known since the 90s. But just in case, you know. It doesn't hurt, does it!?
This is ARIA brain for you. You've learned that ARIA attributes exist and now you cannot stop using them on everything, regardless of whether they help or not.
ARIA stands for Accessible Rich Internet Applications. The keyword here is rich. It was designed for the weird cases, like custom dropdowns, drag-and-drop interfaces or that div that cosplays as a modal. The stuff where the browser genuinely has no idea what's happening and needs a hint. It was not designed for your submit button.
But once someone hears ARIA equals accessibility, the attributes start multiplying.
Suddenly you've got aria-label="Close button" on a <button> that already contains the text "Close." You've got aria-hidden="false" explicitly declaring that a thing is visible. You've got role="navigation" on a <nav> which already is a navigation landmark.
Bad ARIA is worse than no ARIA. Screen readers trust those attributes. If you put aria-label on something, it overrides the visible text. So if you write <button aria-label="Submit form">Send</button>, a sighted user reads "Send" and a screen reader user hears "Submit form." You've introduced a mismatch and haven't helped anyone.
Adding attributes without understanding them is just noise that someone else has to debug later.
The browsers have done the work. A <button> is focusable, clickable, keyboard-usable and correctly announced by screen readers out of the box. <nav>, <main>, <header>, <footer> are all landmarks, all free and all handled correctly. Use the right element and you get accessibility without writing a single ARIA attribute.
The lighter the markup, the faster the reader can parse it. The less you override, the less you can accidentally break. Removing what shouldn't be there creates more value than any addition ever could.
Complexity grows because adding feels responsible and removing feels risky. So we pile attributes on top of attributes, each added by someone who wanted to be sure, and we call it accessibility. Some will call that defensive markup, just to be sure.
But sure of what? That a button is a button?
It already is.