Yes, the technical problem is fundamental. But if Deno managed to be a truly great runtime that solved a lot of people’s gripes with Node and made ES modules etc the price of admission for using it there would have been momentum to create a new module ecosystem.
But once you add that NPM compatibility layer the incentives shift, it just isn’t worth anyone’s while to create new, modern modules when the old ones work well enough.
It all feels similar to the Python 2 vs 3 dilemma. They went the other way and hey, it was a years long quagmire. But the ecosystem came out of it in a much better place in the end.
It wasn't worth recreating packages everytime you needed something that Deno had. If you ended up needing something and there was already something on npm for it, it was easier to just switch back to using node than to adapt/maintain a fork or alternative to an npm package. I think the lack of npm compatibility earlier on led to a lot of churn. Deno would probably be dead if they never improved the npm compatibility, especially considering the rise of bun promising performance improvements like Deno, but with better node compatibility at the time.