I'm having trouble understanding this. How is the CPU bottleneck caused when the CPU is at <100% usage (on the two cores it's using)? Can't the program/game just use the idle portions of those cores?
That's the problem -- the workload on loaded threads often can't be split to the idle cores -- every thread cannot be split up into a multithreaded workload scenario. This could be either a situation where the coding to do this is too much work, or the code itself is not able to be parallelised for additional CPU's.
If a game engine is only dual threaded, it will only use 2 cores of a quad core CPU no matter how demanding those 2 threads get. If a lot of action and things are happening in the game one could see a low of 30fps (or even worse) due to the CPUs (2 cores) not being able to render things faster. Since the game engine is only able to use 2 threads (2 cores) half of the quad core CPU sits idle while the other 2 cores struggle to keep the frame rate up. So one can get CPU limited frame rates while 2 cores sit idle on a quad. In this case the only thing that will help frame rates is a higher Ghz -- clock the CPU faster so the 2 loaded cores can do more work and increase frame rates. Work can't be allocated to the 2 idle CPU's because the game engine doesn't support them.
There are also situations where a game engine may use 4 or more threads, but load the threads differently. If a game uses 4 threads (4 cores) it's possible that only 2/4 threads might get heavily loaded and end up limiting frame rates while the other 2 threads are hardly doing anything and the cores can easily keep up for their allocated workload. This might happen because of the way the game developer has allocated the workload among the 4 threads. 2 threads might be allocated the bulk of the "heavy lifting" while the other 2 threads only do small things -- so 2 cores are fully loaded and 2 cores are idle half the time. So another CPU limited situation can arise even though the game takes advantage of 4 cores and is not fully utilizing them. Again, increasing the speed (Ghz) of the CPU will increase frame rates because the 2 loaded cores that are limiting fps can now render faster.