Funnily, I'd say the reason web apps tend to be worse than native apps is because the web is so much more powerful and flexible.

For a native app, I'm often limited to just a small set of components and maybe images I can put on those components. Animations are out of the picture. Configuring colors is sometimes not available but always painful (every component needs it tweaked, there's no universal way to change it). I can't really change things like border margins, rounding, or adding crazy stuff like wobbles or splash effects on click. And really, the more I try to add those things, the worse experience it ultimately ends up being as the OS style and theming moves on. My best bet is keeping everything as close to native styling as possible because that has the best shot of still being usable in windows 20.

Because web apps allow configuration of everything, everything is configured. There are libraries and frameworks that do mass configuration. You can always add 1, 2, or 20 new layers and webdev has abstracted that away into a simple <MyButton /> component. And because of all these capabilities, you need a pretty beefy runtime to be assured you can do them all. Coupled with the fact that this is all also powered by a javascript engine.

Although technically speaking, native is much more flexible as you can literally do anything. But yes, most devs will just use standard UI components and that's it. So your point holds.

Well, to do literally anything outside of standard components, you effectively end up in a realm of programmatically drawing your own "anythings". Certainly possible because obviously browsers are examples of this. But a lot harder.