I switched solely for the reason Zsh has command substring search. It's a huge timesaver for some who spends more than 50% of time on the terminal.
Ctrl+R in bash (by default, at least) will not search from the middle of a command. For instance, if the previous command was "hello", searching for "ello" will not bring it up. Whereas with zsh, it will.
> ell<TAB>
Completing external command
git-shell xdmshell xkbbell
Completing shell function
_ispell