I assume this is part due to many games only having support for OpenGL and DirectX, and no Vulkan support. OpenGL has the worse performance of the three, and DirectX is windows only.
But when you using proton, you are likely also dxvk, taking benefit of the optimizations made by game/engine developers for DirectX, while suffering little overhead from the DirectX to Vulkan conversion.
A lot of Linux ports are not the best quality to begin with, or even if they were good once, they’re out of date, utilising old fashioned technology that may not be the best at taking advantage of modern hardware. Conversely the windows version was often better built to begin with, and the translation layers have had a huge amount of effort put into them to make them as performant as possible and utilise as much of the hardwares capacity as they can, so much so that sometimes the proton version of windows games running on Linux is actually more performant than the windows native version on running on windows!
Also what do you mean as “runs better”? As in “better performance” or “better compatibility”? I’ll give you one answer for each question, but off course its not the only one. Other cases may have another explanation why the Proton version runs better. This is a complicated topic which cannot have a generalized answer for all games.
- For performance: Developers focus on the Windows version and may not be very talented at Linux development or environments. So optimizing the Windows build by the devs will obviously make that version better. Plus optimizations and some trickery from Valve (and off course others) in Proton might also help, that is not affecting the Linux native build.
- For compatibility: Proton does a better job at providing an environment that is the same each time the game is installed. Linux native changes too much and too often and differs a lot per distribution. At least that is what I think, not sure if that is even correct.