The most popular is bash. The best is zsh, but it's not so much better than bash to convince many people to change their habits.
Using csh or sh is a mistake. You should only use ksh if you're forced to (bash is not available). If a script must have good portability, either use sh and be aware of what features are unique to your implementation, or consider bash as it's quite widespread.
I have seen people who are significantly more comfortable with tcsh to prefer it over bash.
I think it makes sense to habitually use the same shell for interactive use as for scripts. I recommend zsh to people who are newly learning and who have control over their environment, but bash to people who are already slightly comfortable with it. People who may have old shells forced on them or be forced to maintain old scripts should get comfortable with sh, csh, and ksh.
My comments come from the bias of someone who uses bash regularly, occasionally notices zsh, says "that's cute" and goes back to bash, and who resents being occasionally forced to use sh or csh due to legacy "requirements".
Note that when I say sh, I mean the old bourne shell, and when I say csh, I mean the old csh. Sometimes these are links to more modern shells.
Also beware that there are two major releases of ksh out there, with some significant differences in feature sets.