Um ponto-e-vírgula ou e comercial ( ; ou & ) em um script de shell é um terminador de comando. Você não pode usá-lo se não seguir um comando. ; significa "executar o comando anterior em primeiro plano" e & significa "executar o comando anterior em segundo plano".
Uma nova linha em um script de shell é um terminador de comando "fraco". Se houver um comando para terminar, é equivalente a um ponto e vírgula. Se não houver comando para finalizar, a nova linha não terá efeito.
A nova linha após cat <<EOT >> /home/$user/public_html/.htaccess termina o comando cat … . Então o ponto e vírgula após o documento aqui não tem nada para terminar. (Um documento aqui não é um comando; o documento aqui é anexado ao comando na linha anterior, ou seja, o comando cat … .) Se você quisesse encerrar explicitamente o comando cat … com um ponto-e-vírgula, você precisa colocá-lo no final da linha cat … .