First, VM swap within the OS takes place regardless of external memory pressures (i.e. host pRAM allocation or deficit). Most guest OSes page inactive pages to swap to increase available memory for active applications and to utilized memory for I/O caching. Applications like MS SQL can/will pre-allocate their memory (under user runtime configuration control.) In the SQL case, you can dynamically allocate, allocate statically but be swap eligible, or allocate statically with no swapping of SQL memory. In Windows there are registry settings to promote similar choices for kernel pages.
Second, VM swap outside the OS requires memory pressure where pRAM is running into an allocation deficit (i.e. memory oversubscription). Memory compression and shared memory pages in ESXi help to reduce these external pressures on memory, but once you hit a wall, active swapping can take place with priorities similar to OS swap based on the ESXi virtual machine manager. This will NOT happen if memory for the VM is reserved.
(YellowBricks has a short article that might be of interest, including a few reference links: http://www.yellow-bricks.com/2008/06/16/swapping-esxtop-and-procvmwareschedmem/)
Third, memory ballooning helps to resolve external memory pressure across the ESXi host by taking advantage of swap-ready memory pages within the guest OS as a means of granting-back inactive memory (pRAM) to the host for allocation by another VM. This requires the VMware Tools to be installed in every VM that will grant-back memory using ballooning. While VMs without VMware Tools cannot release their swap-ready memory back to ESXi for reallocation, they can benefit from this behavior in other VMs to reduce memory performance bottlenecks that would otherwise result from VM swap (ESXi) conditions.
So, when you add up the implications of the above you get a lot of variables to factor into your performance equation; too many for my taste. The best practice for performance is to avoid the need for VM swap (ESXi) where applications are sensitive to memory performance. Fortunately, it is easy enough to create an environment where these conditions take place without too much trouble. The vSphere Memory Resource Management white paper is a great source of ideas (and explainations) here:
http://www.vmware.com/files/pdf/perf-vsphere-memory_management.pdf
It might not be readily obvious, but using a dummy VM with memory reservation can help create external memory pressure on a test VM. This can help you generate the "tests" you need in a controlled way. Likewise (as in the white paper) you can test with/with out ballooning to see the impact. Simply stated, if you're running hosts where VM swap (ESXi) is a dominant factor, you're going to need more pRAM.
The great thing about vSphere's inclusion of these resources is that they minimize the performance impact when they are needed.Given an environment without them, you're only choice would be fewer workloads or tighter guest memory provisioning...