I fiddled around a little bit this weekend and confirmed that this (sloppy) code makes highlighting work for all shell types that sh-script supports:
;;A quick hack to try and support more shells syntax highlight in org babel
(require 'sh-script)
(require 'ob-shell)
(let ((shells (seq-filter (lambda (shell) (not (eq shell 'sh))) (flatten-tree sh-ancestor-alist))))
(let ((toAppend (mapcar (lambda (shell) `(,(symbol-name shell) . sh)) shells)))
(setq org-src-lang-modes (-distinct (append toAppend org-src-lang-modes)))))
I'm a relative newcomer to elisp, so comments and suggestions are welcome. This is basically what I meant by "dynamically amend org-src-lang-modes based on the contents of sh-ancestor-alist".
Thanks,
Derek