A lot of modern programs are built on bloated frameworks that drag in a lot of junk you don't actually need in order to run the program. Swapping those unused pages out frees RAM for cache and programs that can actually make use of the RAM.
I speak from painful personal experience here.
Last year, I switched one of my web sites to a promising new web server framework that was built on top of Firefox. It may sound strange to build a server-side system on top of a client-focused program like Firefox, but it had some huge benefits. Firefox is very powerful, offers some really impressive internal services, and it reduces the impedance mismatch between server and client to have both running similar platforms.
But there's a downside: Firefox is big. Really big. This was a version 1.x sort of project, so they hadn't gotten around to things like removing the GUI support.[*] My site didn't need any of that, but because the VPS technology my hosting provider used didn't allow swap space, that GUI code and all the other parts of Firefox I didn't use ate real RAM. I ended up needing 512 MB RAM minimum just to run the site without it crashing due to memory exhaustion. If my VPS had some swap space, I probably could have gotten by with a 256 MB plan.
[*] Removing the GUI code from the framework may not even have been desirable, since one of the benefits of this platform was high-fidelity web scraping, because the server side framework could download web pages from another site, and you could manipulate them just as you would on the client side. Think mashups. A lot of that sort of thing would break if you can't "render" the web page into some graphical context.
By the way, this web framework is essentially dead now, so there's no point name-and-shaming it. Best to just take the broader lesson to heart: yes, swap is still useful even if you have gigs of free RAM.