Hi
I debugged this a little and see the regression occurred when sh-script.el sh-font-lock-paren was changed in Emacs 30 to have:
;; Also recognize OpenBSD's case X { ... } (bug#55764).
(and (looking-at ";\\(?:;&?\\|[&|]\\)\\|\\_<in\\|.{")
where the Emacs 29 had:
(and (looking-at ";[;&]\\|\\_<in")
when I modify Emacs 30 sh-script.el to revert this one line back to the Emacs 29 content, we get the correct answer. I suspect reverting this line is not the right thing to do. Rather, I hope it helps someone find the solution.
Thanks
John