Honestly, if I were to dig, then for my generation[0], I'd blame save and close popups more, but even more than that, flaky component-based software. At some point in the Windows 98/NT and then 2000/XP era, you'd often see software throwing "fatal errors" and then continuing to happily chug along, possibly with subtly broken features, and ready to throw more inconsequential "fatal errors" if you moved your mouse the wrong way.
Repeated exposure built immunity.
You get a scary error with incomprehensible details[1], maybe the app closes, so you open it again and continue until the next error happens; maybe it doesn't close, just keeps going - maybe partially broken, maybe not. Either way, text is incomprehensible, but dismissing the message lets you keep going, so you learn that. At some point you see the message, think "oh this again", and close it without thinking. Works 90% of the time, for the other 10% you have coping strategies like "press CTRL+S every 30 seconds", "use Save As instead of save", or "make a copy of the file at start of your work session" all committed to muscle memory.
The modals with two or more buttons were the annoying ones. Asking you to make a decision. Asking you to stop. Eventually you learned to press the right button for ones where it mattered, and go straight for [X] or "Cancel" for everything else. And it worked.
Then came the web, and that's a rant for another time, but suffice it to say, the advertisers successfully taught everyone that you should always click the "X" button on anything that pops up without reading it, way before web apps became a thing.
We've worked out some useful UX patterns since. Non-blocking notifications, side panes, undo, undo history (still annoyingly uncommon). I don't think there's a single solution to the problem, but I am sure of the underlying principle that should guide it:
Whatever you do, do not become an obstacle standing between the user and the thing they're trying to do.
--
[0] - Can't speak for the kids these days, who learned computers after Windows ME times, or just grew straight into mobile revolution and mostly skipped dealing with PCs.
[1] - That was bad, but we've since overcorrected in the opposite direction. Ideal is IMO enough information to give you a clue about internal and external causes and state of the program, even if you have no technical background, because people bent on doing a task and even minimally curious can use that to random-walk into a solution. Basically: something you can act on as a user if you really care to.