If the program is multiprocessing (uses multiple threads or processes internally), then it can be effectively spread over multiple cores. Some are, some aren’t, and it’s difficult to predict which ones might be. From a programming standpoint, it doesn’t make sense to create threads unless there are tasks which are useful to perform in parallel (complex computations while a user interface stays responsive is a common one). So it might be that a program would use 2 processors efficiently, but have no use for a third or a fourth one.
All of which is largely irrelevant.
Bring up task manager sometime, click the button for “show processes from all users,” and notice how many there are. At “Idle” XP might be running 60 or more processes (admittedly many of them aren’t doing anything), and Vista is even worse, since it has to spy on everything you’re doing to make sure that Hollywood doesn’t mind. These processes take up resources. Even if they’re each single processing apps, they can be run on different processors (or cores, same difference for the most part). Which means that they’re using up less of the processor that your program is running on, making it better off even if it’s single threaded.
Which is pretty much your position. A couple of caveats, though: quad processors are often slower (in Ghz) than their dual-processor counterparts. In that case you might see slower behavior on the quad. Even if they’re even, though, the more processors you can throw at a problem, the more likely it becomes that something else (memory, network speed, disk speed, video card, hamster food) becomes the bottleneck for your computing. Once that happens, the extra processors are wasted. Potentially, having more processors allows you to consume some resource so fast that ALL the processors are slowed waiting for it, whereas a smaller number of processors wouldn’t have been able to queue as many requests, and any given app would have run faster. But these are minor quibbles. All things being equal, a quad-processor will outperform a dual processor of the same speed at almost everything, but for unthreaded applications, the difference may be unnoticable.