Performance is vastly helped just by not having a fragmented ecosystem or a moving target. If I know all my customers are running my software on the exact same hardware, I can optimise the hell out of my software, and also I can see
exactly how it will perform for the end user and polish the worst bits until either it's shiny enough for me or I run out of budget.
If every single user has a different setup with components chosen from a vast array of possibilities that can all do different sets of things at different speeds... well, I can get it to work on my machine, and I can try and guess what to degrade when things get bad, but ultimately I just have to throw it over the wall and hope it's not too terrible in the wild. It's impressive, really, that PC desktop games work as well as they do.