Clean install of XP, clean install of Vista. BF2 on XP = smooth. BF2 on Vista = chugging along running out of memory.
Smart money goes on XP for performance - of course Vista uses more resources than XP, to say different is to defy logic! Granted that if I had 4GB, I would be using Vista for everything, since 4GB is more than enough for 99% of what I need, but a slimmed down install of XP > slimmed down install of Vista.
That's because BF2 was designed for XP and not Vista. In XP, when you load a game it will try to "grab" as much video memory as possible - preferably, all of it. This is to ensure that the game can create and load textures whenever it wants. This is how BF2 works.
In Vista this fundamental game design principle that has been around since the very first incarnations of Glide, OpenGL and DirectX was ripped up and thrown out the window for good (thank god). Now the GPU and GPU memory is a "shared" resource. The GPU is time sliced just like the CPU. And GPU memory is in fact mapped straight into the virtual memory address space of Vista. This opens up the possibility for much better memory management. No longer should games be programmed to gobble up all available memory. They should be programmed to request it on a ad-hoc basis, as and when they need it. The OS then deals with giving that to them - in the form a virtual memory page. Whether that actual page of memory is in the graphics memory, system memory or, hell, even the page file - should not be of concern to the game. The game relies on the OS to properly look after it's memory management and indeed Vista does. As soon as you load a DirectX game up all of the 3D surfaces (textures) in use by the Vista desktop will be paged out of the graphics memory and into system memory. If system memory in turn becomes a bit low then they can be paged out a third level (the page file). This frees up space for the foreground game process to use the graphics memory. But of course, if you Alt+Tab out of the game then the tables are turned again. 3D surfaces belonging to the desktop will get paged-*in* again to the graphics memory and some of the game's least used textures will get paged-out. Of course thsi paging process only really ever occurs when memory is low or expected to be low. If you are just playing some ancient game that only uses 10MB in textures then it's unlikely any 3D surfaces for the Vista desktop will get paged-out of the graphics memory at all!
So, technically, you can load and play 2 games at once on Vista... or for a more likely scenario, say, 1 game, 1 digital TV viewing software, 5 videos... try that on XP and you'll be presented with a very slow and probably blank screens on everything but the game. On Vista? Beautiful multi monitor hollywood perfection

Whether of not current graphics drivers on Vista will allow that to happen reliably is another matter - but the basis for that is here today. I've certainly not had any problems with my graphics drivers though.
Bottom line is: Don't write off Vista just because a few "legacy" games don't work well on it. The OS is fundamentally brilliant and also way ahead of its time in some respects. It's one of those OSes that fundamentally changes the DNA of the OS platform, going forward; where benefits are only just being discovered by end users possibly several additional OS releases down the line.