I don't think there is any chance for a perfect linear scaling of performance, as there is some overhead to having to coordinate two cores. Unless something else was already severely bottlenecking performance prior to adding a second core, the improvement will not be perfectly doubled.
This is assuming the program is even multithreaded, and I'm not aware of many games that are (granted I've fallen behind on gaming news). If it is, then there is a definite possibility of improved performance.
Single-threaded games might perform better if by chance you have a lot of stuff running in the background all the time, as various hyperthreading tests with games running with mp3 encoding and defrag software running in the background attest.
As for multicore and new architectures, advances in single-core performance are still on the way. However, they aren't getting any easier to achieve (diminishing returns), multicore can offer significant benefits and has become the lowest-hanging fruit on the tree.
Multi-core is a specific implementation of SMP, it's just dual processing on a chip.