bash groups de comandos: Por que os chavetas exigem ponto e vírgula?

Eu sei a diferença de propósito entre parênteses() e suspensórios{} quandogrupo de comandos no bash.

Mas por que a construção de chaves exige um ponto e vírgula após o último comando, enquanto para a construção de parênteses, o ponto e vírgula é opciona

$ while false; do ( echo "Hello"; echo "Goodbye"; ); done
$ while false; do ( echo "Hello"; echo "Goodbye" ); done
$ while false; do { echo "Hello"; echo "Goodbye"; }; done
$ while false; do { echo "Hello"; echo "Goodbye" }; done
bash: syntax error near unexpected token `done'
$ 

Estou procurando um insight sobre por que esse é o caso. Não estou procurando respostas como "porque a documentação diz" ou "porque foi projetado dessa maneira". Eu gostaria de saberporqu foi projetado desta maneira. Ou talvez se for apenas um artefato histórico?

Isso pode ser observado em pelo menos as seguintes versões dobate:

GNU bash, versão 3.00.15 (1) -release (x86_64-redhat-linux-gnu)GNU bash, versão 3.2.48 (1) -release (x86_64-apple-darwin12)GNU bash, versão 4.2.25 (1) -release (x86_64-pc-linux-gnu)

questionAnswers(1)

yourAnswerToTheQuestion