[…testコマンドの別名
]…testコマンドの終了オプション
だから「[」も「]」も、字句として独立している必要がある

「 ];」という記述が通るのは、シェルがtestコマンドに渡す前に
「;」を直前のコマンドの終了文字として解釈し、
testコマンドへは「]」という字句として与えるため

シェルの解釈を考慮すると、「[ 〜 ]&&[ 〜 ]」なんていう記述も許される