O ponto-e-vírgula é usado com frequência porque algumas pessoas (/ me, por exemplo) gostam de um estilo como este:
if [ ... ]; then
doit-it-then
else
doit-it-else
fi
Portanto, se a palavra-chave then for colocada na linha de condição, ela será necessária porque um novo comando será iniciado, conforme escrito por choroba.
Com relação às aspas na verificação de condição, elas são frequentemente usadas com variáveis para garantir que nenhuma exceção ocorra se nada for atribuído à variável. Este é um estilo mais seguro e parece desnecessário, mas mesmo em programação de shell, de tempos em tempos, os programas são processados, embora o conteúdo não possa ser atribuído a variáveis. Então o comando ainda está funcionando porque uma string vazia é comparada.