The reason for multi-core CPU architectures is because single cores end up getting too hot above certain clock speeds IIRC. GPU's on the other hand are highly parallel because they must deal with large quantities of simple, repeated instructions. As someone who has done some multi-threaded programming, it can be a pain and a half to do right, for various reasons. CPU's can give up processing time to another thing trying to run at any time in between operations. Most lines of code in a modern program are actually multiple operations; as such your program may pause for a millisecond or two right in the middle of executing a line of code for another chunk of something to run for that millisecond. This is normally not too much of a problem except in cases in which data from one part depends on data in the other. This can lead to odd results, and thus a need for control over the flow of multiple functions running simultaneously. To avoid getting into specifics, certain special operations were created which allow for inter-thread communication in various ways to tell each when it should and should not continue (similar to several trains running on the same track controlled by signals). These need to be set up correctly, since if they are not, strange bugs will be introduced which are not only very rare, but also as a result of their rarity incredibly difficult to trace back to their source in many cases. With single-threaded applications, you have a clear program flow of "this line, then this line, then this line," whereas with multi-threaded programming you must think of every possible combination of functions which could run at the same time which would interfere with one another's ability to do what they are supposed to.
For most applications, the software doesn't need to be multi-threaded since it can't even make use of a full core, let alone 2, 4, or 8. More and more games, though, are being made multi-threaded; some even make use of CUDA, which is another can of beans entirely (CUDA involves running part of your program on the GPU, rather than CPU; most GPUs have much more overall processing power than CPUs, but their architecture is much more specialized and has hundreds of cores which individually are slower than CPU cores).
tldr version: play OTTD and put several trains on the same line, moderate them with signals, and you get roughly the same experience as multi-threaded programming without the code