When coding a game, there are many tasks that can be done both on CPU and GPU. Even on purely graphics. Deciding how much each game/engine takes on specific component is an architectural step. Since all the resources are limited, you need to decide as an architect what runs where... So let's say hypothetically you spend a lot of cpu on AI so there is very little left for graphics... you try to move as much as possible of it to gpu since it makes more sense than pushing there AI calculations and then download back the results.
Academical example of where high end skylake can perform better... bear in mind it's never that simple, but for our case good enough. You run realtime strategy with very complex ai. You have many faction fighting each other... so each faction AI can run in a thread that gets scheduled on one logical cpu... When you have 4 logical cpu machine, let's say 1 core is reserved for graphics, music, whatever and other 3 are shared between 15 competing AIs... now, same scenario, just with 20 logical cpus.... those 15AIs are spread to 15 logical CPUs, no competition for logical cpu resources and there are still 4 taking nap.
But as I said, in real scenario it's much more complicated.