More cores helps when two conditions are met:
1: Programs are using multiple threads (they all do)
2: those threads can be executed in parallel
The second is the sticking point: Its very hard to get multiple threads running at the same time for most tasks in a way that actually improves performance. For workloads that do scale though, they tend to scale to hundreds of cores (anything to do with encoding is a good example). As a result, most of the work is typically offloaded to the GPU instead, rather then the CPU.