Tbh, there are many ways to skin a cat, using ECS is not necessary to ship a performant game, not is it necessarily the
modern thing to do. It's one of the many architectural patterns you can build a game on top of, and has many advantages as well as detractors.
For example, Godot isn't really build around ECS, but the idea of servers which are mostly autonomous game subsystems that can process their area of expertise (rendering, physics etc.) mostly independently, and are loosely coupled to the general game logic.
ECS architectures originate in the PS2/PS3 era, when CPUs were awful. Tiny caches, horrible branch mispredict penalties, slow memory, fragmented memory spaces and lack of a random access storage forced developers to build their games around predictable memory access patterns, that in general resulted in streaming architectures, where data necessary for the game data to be streamed in tiny chunks to be processed.
While generally this is good practice even nowadays, with the advent of superfast CPUs with amazing speculative execution, great branch predictors, and tens of megabytes of cache, this is no longer strictly necessary, especially considering that most modern games haven't really increased that much in terms of stuff going on on the screen compared to say, a decade or two ago. It's still uncommon for the player to fight more than a dozen dudes in an action game.
And in games with thousands of things on screen at the same time, often specialist logic and handling is necessary.