The web isn’t a first class citizen on desktop as you can’t run new AAA games in one. The real difference is the web is a more limited UI that breaks down when your also forced to use the more limited interface of mobile.
For example on desktop the top 10% or so of the screen is taken up by the browsers UI and tabs which is normally fine. On a tablet in keyboard mode your left with ~40% of the screen being useable. Native applications sidestep this by not needing the browsers UI.
AAA games are a weird example. It's one of the few app categories that really needs full native performance, although a lot of them can also scale nicely to run on older hardware.
WebGPU and WebAssembly are getting close to matching the speed and capabilities of older hardware.
Tab UI is possible to hide, and has been for some time. You can "app-ify" a web site into a dedicated window with no browser UI.
ISTR apps that we doing this >10 years ago.
I think the real differences break down to economics. Can't charge an app store fee for web sites or force sites to use your advertising network.
For me, the big thing I can't do with a web app is work around the keyboard. If I try to write a chat app, the keyboard will often cover the text box, and there's often no way to prevent this. There's no APIs for "tell me where the on-screen keyboard is so I can move the app UI out of the way" or even "automatically resize the window to exclude the keyboard".
The options for showing a numpad are also very limited. <input type="number"> exists, but it doesn't work for things that aren't numbers, like codes starting with 0.
That’s not a solution to the issue though. An independent application is managed by the OS, but websites are generally managed by the browser which has multiple tabs. Users don’t want every tab to be treated like it’s own app, which means websites need to play nice with the browsers UI even if the OS did give them full control.
Now, mobile OS have mechanisms to treat websites as native apps but your still stuck with web baggage. From a users perspective installing this website as a native app is simply worse than installing native app. Basically when you start improving the websites as app enough, such as gracefully handling network outages, you just end up with a native application.
From the other direction anything that would be fine as a website is already fine. You don’t get websites killing huge numbers of native apps because in that case there weren’t any native apps built to be killed.
This is a very important point. Mobile web apps primarily don‘t feel right because of the browser UI and also because the interaction with scrolling/tapping is never quite as perfect.
For example on desktop the top 10% or so of the screen is taken up by the browsers UI and tabs which is normally fine. On a tablet in keyboard mode your left with ~40% of the screen being useable. Native applications sidestep this by not needing the browsers UI.