Minha opinião é baseada em algo não mencionado por outros, ou seja, que o código no meu trabalho tende a durar décadas (literalmente) e, portanto, a manutenção é muito importante para nós. Manutenção do nosso próprio código e das bibliotecas que usamos. Nós controlamos nosso próprio código, mas é do nosso interesse que as bibliotecas que usamos sejam mantidas por terceiros nas décadas acima mencionadas ou mais.
Para encurtar a história, concluí que a melhor maneira de conseguir isso é usando implementações de software livre das especificações da Sun até o JVM bruto.
Das implementações de código aberto, o Apache Jakarta provou manter suas bibliotecas e, recentemente, a Sun fez muito trabalho na produção de implementações de alta qualidade para Glassfish v3. Em qualquer caso, também temos o código-fonte de todos os módulos, portanto, se tudo o mais falhar, podemos mantê-los nós mesmos.
As especificações da Sun são geralmente muito restritas, o que significa que as implementações em conformidade com as especificações podem ser trocadas facilmente. Basta dar uma olhada nos contêineres de servlet.
Nesse caso específico, eu sugeriria dar uma olhada no JavaServer Faces simplesmente porque ele faz parte do Java EE 6, o que significa que estará disponível e será mantido por muito, muito tempo. Em seguida, optamos por aumentar com MyFaces Tomahawk, pois oferece algumas adições úteis, e é um projeto jakarta.
Não há nada de errado com o JBoss Seam ou outros. Acontece que o foco deles é menos na questão da manutenção que é tão importante para nós.