I don’t know much about League of Legends or its architecture, but I could imagine they were making tradeoffs at times for the product’s sake. I think they hint at this with `std::string` usage in their tech debt article. [1]
It’s been said to death at this point, but technical shortcomings can be orthogonal to a video game’s success on the market.
[1] https://technology.riotgames.com/news/taxonomy-tech-debt