I think the main differentiating factor between phantomjs and the above mentioned ones is that phantomjs actually uses WebKit and has full support for everything that WebKit supports. Zombie.js uses the DOM API due to jsdom, which might have its own parsing intricacies.
I don't know that any of those support SVG. If you want to render e.g. Raphael.JS drawings on the server, headless JS with SVG DOM support is pretty useful.
That actually sounds like a really neat idea - throwing together a PhantomJS script that scrapes the content of a particular div containing Raphael or Flot and then renders as png.
Zombie.js: http://news.ycombinator.com/item?id=2038663
HTMLUnit: http://htmlunit.sourceforge.net/
Celerity (JRuby wrapper around HTMLUnit): http://celerity.rubyforge.org/