Vim:
- better as an editor
- more active scripting community - internal language: vimscript
- one central repository of scripts, plugins, color schemes, ...
- also extensible in python, ruby
- can be made portable (emacs has some problems with that)
Emacs:
- non modal (most of today's editors have taken this approach)
- more powerful language for extending it (elisp is a full blown language, and in emacs you can practically redefine everything; while in vim you cannot redefine build in functions of the editor. On the downside, vimscript is relatively similar to today's dynamic languages while elisp doesn't resemble pretty much anything)
- more extendible
- excellent support for GNU tools (the bunch of them)
Personally, I prefer vim - it is small, does what it's supposed to do, and when I wish a full blown IDE I open VS. Emacs's approach of being an editor which wants to be an IDE (or should I say, an OS), but is not quite, is IMHO, outdated. In the old days having a email client, ftp client, tetris, ... whatnot in one package (emacs) made some sense ... nowadays, it doesn't anymore.
Both are however a topic of religious discussions among the programmer and superuser community users, and in that respect, both are excellent for starting flame wars if putted in contact (in the same sentence / question).
Also, the differences between both have already been covered in several questions in here, so for the finer details search a little on the topic.