I've noticed two (possibly related) issues with sh.jsf:
I have no clue if it's easy or reasonable to fix it; if it'd be complicated or almost impossible then I'm happy to live with it.
Now, technically, [ is a built-in command whereas ] is just an arbitrary argument to that command, so strictly speaking this behavior can be explained. Although obviously the purpose of the mandatory ] argument is for the condition to look nice, and for that goal these should be highlighted equally.
With [[ ]] the story is more complicated, as this is not a built-in command, but part of the shell's language syntax -- inside these, operators such as < > have different meaning. So highlighting them differently probably doesn't have a reasonable technical explanation.
An easy workaround for this second issue (especially if checking for the position of the arguments, as required for the 1st point, is not easily doable) could be to remove [ and [[ from the list of known keywords, so that [ ] [[ ]] are all rendered as normal text.
May be related to the issue addressed in patch 126 or Github PR #16