For me a big part is that global CSS doesn’t match component based web applications as well. Coordinating global class names becomes a pain quickly. Then you move to scoped CSS and suddenly CSS doesn’t add much anymore.
In other words, CSS class names are the new global variables. I like that framing. Everything old is indeed new again.
That said, don't blame CSS just because React treated it like a second class citizen. Try Svelte. Matches the components there perfectly. It really is amazing to use a web framework that doesn't hate the platform it's written for.
However scoped css variables does add quite a lot. So I'm thinking that can't be the scoping you were thinking of?