iTerm has autocomplete features built in. It remembers your past commands and when you are writing something on the terminal, simply pressing Control-; it will show you a drop down menu of suggestions from which to choose.
Unlike most terminal emulators, iTerm2 comes with a pretty complete set of features. It has built-in search, autocompletion, tabbed navigation, Growl support and even a built-in clipboard manager for various API keys and such.
Using the Preferences Menu you can set up hotkeys to map virtually any action you can think of to a single key or a combination of them. This is extremely helpful as it allows you to use shortcuts to edit commands you are typing in the terminal and while most terminal emulators have shortcuts for this sort of thing, few of them let you define your own.
iTerm2 can store up to 4M of history of commands you already used. This, coupled with the built-in search features makes it possible to type a command only once and then search for it through the history for subsequent uses.
A release a few months back didn't respect the system umask which left people scratching their heads when things quit working. Terminal.app may not have as many bells and whistles, but that is a good thing.
Very few features are built into the product itself as the intention is for the plugins to provide most of them. Yet, taking the other listed con of immature plugin ecosystem into account, this leads to either living without the feature or using an unstable plugin.
Allows for viewing the scrollback buffer in an external pager of your choice ('less' by default, with support for 'more' and 'most'), a huge benefit for turning actions taken in a live terminal session into a script for efficiency or dissemination or collaborating on workflows.