Sounds like more than half the problem is the lack of standardization in desktop operating systems. There’s no reason why all Mac apps can’t take advantage of the system standard tabbing like AppKit Mac apps do, but most don’t, so in most apps you don’t get apps unless the dev implements them.
Same deal with updaters. If macOS and Windows had a standardized way to update apps Linux distros do that wouldn’t be nearly as annoying.
Startup services and to some degree tray icons fall under enshittification. Some apps have a legitimate need for these (like Alfred or Raycast or an audio mixer applet) but most are blatant mindspace/metrics booster grabs.
For me the upsides of web apps are counteracted by omnipresent annoying browser chrome, resource consumption, and the general flakiness stemming from nobody being able to agree on how to develop web app UIs (even just within the React sphere, let alone beyond it). The number of manhours set on fire and level of potential for refinement left on the table by the innumerable redundant bespoke widget reimplementations is unreal.