zsh no es totalmente compatible con bash. Hay una variedad de diferencias. El nuevo zsh es más compatible con bash (= ~ soportado, exec ahora tiene las opciones de bandera adicionales, etc.) pero la compatibilidad total no es un objetivo, ni siquiera bajo "emular".
Por ejemplo, la subcadena bash es $ {foo: offset: len} pero en zsh es $ foo [inicio, final] y ese es solo un ejemplo simple.
zsh es un shell influenciado por tcsh y ksh que hace muchas cosas a su manera; La compatibilidad POSIX no es explícitamente un objetivo, pero los desarrolladores responden a los parches que agregan opciones / emulan el comportamiento que acerca las cosas a POSIX. Pero cuando empiezas a meterte realmente en el poder del shell, comienzas a crear scripts de solo escritura, más aún que bash.
bash es POSIX sh + ksh + pedanticismo, con algunas características ahora copiadas de zsh. También tiene scripts de solo escritura, pero debido a que tiene operadores menos potentes, terminas sin usar la concisión de zsh y las cosas podrían ser más legibles (excepto por todas las citas para evitar la división de espacios en blanco, la estúpida $ ksh-style $ array significa primero) -elemento-de-matriz, no todos-elementos-de-matriz, etc., etc.
Escribir scripts que aprovechen al máximo el poder de cualquiera de los shell no es prudente, a menos que se encuentre en un entorno restringido (por ejemplo, escribir scripts de rc del sistema, donde algunos FS pueden no estar montados, etc.). Como ideal, use Perl / Python / Ruby / lo que sea para algo lo suficientemente grande como para que necesite la expresividad no en Bourne sh, si desea que otros puedan mantenerla. Guarde las cosas del shell para cosas relacionadas con el shell interactivo (programación de finalización de pestañas, etc.).
No usaría bash sobre zsh. Usaría bare sh sobre zsh para scripts simples, o cambiaría a un lenguaje donde las matrices asociativas tengan operadores decentes (a diferencia de zsh, donde están, nuevamente, 'concisos'). Yo podría cambiar un script sh para fiesta si necesito que una característica poco para extender una escritura probada de trabajo existente y no tienen tiempo para volver a escribir ahora.