Olá,
IMO:
Sistemas internos (intranets da vida) - JSF, SEAM (se só puder usar Java) ou .Net, Silverlight (se puder usar M$)
Justificando: possuem ótima produtividade, porém suas aplicações consomem muito recurso do servidor, de banda e do cliente. Não espere alta performance de sistemas assim, a não ser que tenha “bala na agulha” pra investir numa infra poderosa.
Sistemas para a internet (“sites”, como se diz) - Spring MVC, Struts2, Play, VRaptor (se só puder usar Java) ou Grails (se puder usar algo “meio Java”) ou Rails, PHP com Zend (se puder usar algo não Java).
Justificando: possuem boa produtividade (em geral menor produtividade na criação das ‘telas’), porém consomem menos recursos de servidor, banda e do cliente. Facilmente podem ter ótima performance mesmo com uma infra mediana.
De todos esses, EU gosto mais do Grails e do Seam, mas no geral o primeiro mesmo.
Espero ter ajudado.