(command1 && command2) || command3
だと、余分なサブシェルが起動されるから無駄。
command1や2でシェル変数を操作してたら反映されないというバグを生じるし。

{ command1 && command2; } || command3
と、グルーピングにするべき。

もちろん、&&の方が優先順位が高いから、
command1 && command2 || command3
と書いても同じことだけど。