Com certeza, parece-me que você está interpretando mal o ServerAliveCountMax. Pelo que entendi os documentos, é o número de mensagens vivas do servidor que podem ficar sem resposta sem que a conexão seja terminada. Portanto, em casos como os que estamos discutindo aqui, configurá-lo com um valor alto apenas garantirá que uma conexão interrompida não seja detectada e terminada!
A simples configuração de ServerAliveInterval deve ser suficiente para resolver o problema com um firewall, esquecendo-se da conexão e deixando o ServerAliveCountMax low permitir que o terminal de origem perceba a falha e termine se a conexão falhar de qualquer maneira.
O que você deseja é, 1) que a conexão permaneça aberta permanentemente em circunstâncias normais, 2) que a falha de conexão seja detectada e que o lado de origem saia com falha e 3) que o comando ssh seja reeditado toda vez que ele sai (como você faz isso é muito dependente da plataforma, o script "while true" sugerido por Jawa é unidirecional, no OS XI realmente configurar um item launchd).