I don't see either one as being "better". They're different applications with different purposes. Wine is an attempt to recreate the Windows environment and API on *nix, while VMware provides an emulated hardware environment for the Windows operating system.
If you only have one or a few Windows programs you want to run, then wine will usually be all you need. Of course this depends on how well wine supports the programs. Some programs will not run at all, others may even run better than on windows. And for games that require hardware graphics support, I think wine or it's Cedega and Crossover brethren are your only choice. Wine is also generally lighter on your system than an entire VM+guest OS setup.
If you need a program for commercial purposes, you might look into buying "official" support from Codeweavers. They say on their website that they could probably get any program to work, if you can afford the time and money for them to work it out.
If you need to work within a real Windows environment, have many, or specialized, programs to run, or just can't get what you need to work under wine, then use a VM. Since you're actually running Windows, then there should be few problems with running any specific programs, unlike wine where you may have broken functions due to unfinished library calls. But remember the extra overhead needed, as well as the fact that you have to have a licensed copy of the Windows OS in order to use it.
Finally, since you're running Windows, you still have some of the security and stability problems that OS entails. The main difference is that you can more easily wipe and replace it if it goes bad, and it's mostly kept sandboxed from your underlying host system (but any files that the VM can access will still be at risk).
As for me, if I have a single program I want to run, and there are no reasonable Linux equivalents, then I'd try it under wine first, and only go for a VM if I had no other choice.