Do shells have any actual advantages or disadvantages? They can all run any binary, they all support pipes and > (output to file). Why would one choose bash over sh, or sh over ksh, etc? Why does any shell other than sh exist in the first place?
Comparison of shells?
bash;shell;zsh;ksh
An executable sh is requisite for contemporary Unix-like operating systems.  There are various standards (e.g. POSIX) dictating what that means, although since unix-like doesn't necessarily mean certified compliant with anything, the reality varies somewhat.  In general, they at least implement something compatible with sh, the original Bourne shell.  This is why sh is usually a symbolic link, and sh is best understood today as a standard for the behaviour of whatever it links to.  bash is the Bourne Again Shell, which is what sh often links to on GNU/Linux systems (but there are other possibilities, such as dash and ash).Bash includes all the features of sh and is intended to provide backward compatibility for sh scripts.  There are apparently some potential obscure glitches in this compatibility, but they are probably not too significant.So in terms of functionality, bash extends sh; it does everything a sh should and a whole lot more.  Another popular extended sh implementation which also satisfies POSIX is the KornShell, ksh.  The other general purpose command shell lineage still used in the *nix world is C shell, csh.  C shell, however, is not compatible with sh code, and an implementation would never be linked to sh.