Zsh is largely compatible with bash's quirks, and then layers lots of weird things of its own on top of that. ZSH is a great, very powerful shell which I use and enjoy, but it's not any of: "simple", "consistent", "fast" or "lightweight".
OK. Fair enough. I use zsh (only scratching the surface) because years ago it turned out that the completion "seemed" to me to be much more powerful (e.g., fuzzy matching, substring matching, etc.), but i haven't invested time to become a wizard. Do you (or anyone else here) endorse a shell which is worth becoming a wizard in? I'm thinking perhaps eshell or simply zsh-in-M-x-shell is perhaps a good starting point, but somehow that's always felt awkward to me, notably because completion seemed to be weaker than simply xterm+zsh.
Don't go the eshell route unless you're prepared to learn Elisp very well and then write a ton of custom Elisp code. Take a look at its documentation:
> Eshell is _not_ a replacement for system shells such as ‘bash’ or ‘zsh’.
Use Eshell when you want to move text between Emacs and external
processes; if you only want to pipe output from one external process to
another (and then another, and so on), use a system shell, because
Emacs’s IO system is buffer oriented, not stream oriented, and is very
inefficient at such tasks. If you want to write shell scripts in
Eshell, don’t; either write an elisp library or use a system shell.
And yes, I never managed to make auto-completion work really well in M-x shell (or eshell).
One possible shell env you might be interested in is IPython. It's a Python REPL with support for launching external programs, shell-like variable substitution and much more. Coupled with qtconsole it makes for a great shell-like experience. I was using IPython under Windows as my shell for awhile, before switching to PowerShell.