Olá.
Bom, lí a maioria dos comentários, e acredito que alguns são pertinentes.
Só acho que ficar defendendo frameworks como um time de futebol não leva a nada.
Somos desenvolvedores e devemos estar aberto a tudo o que é bom.
Struts - É um framework bom e fácil de desenvolver.
Os prós poderiam ser a separação da lógica de formulários Bean com ActionForm ou DynaForm, as simples actions e as regras de navegação e a estabilidade.
Contra seria a programação de iterações no seu jsp quando poderia existir componentes que facilitassem isso, justamente por não ter componentes ricos. (A versão 2 ainda não usei, alguém poderia comentar a respeito?). Outra coisa ruim é falta de abstração dos objetos passados via request.
JSF - fácil aprender, ciclo de vida bem projetado em 6 fases distintas, possibilitando desenvolver de modo mais transparente, principalmente para fazer componentes novos ou implementar “renderers”.
Componentes ricos, muito úteis.
Facilidade em uso do Ajax (como DWR e A4J).
Contras:
Muitos bugs nas implementações, aliás, coisas essenciais na vida de um framework. Um deles cheguei a reportar para o grupo MyFaces.
Falta de abstração do componentes request e complicação para usar GET.
Problemas em ambos os frameworks: Falta de integração para modelagem de sistemas usando BPM, por exemplo, regras de conversação, ciclos de casos de uso (request ao inves de session).
O faces tem a vantagem de poder ser usado com o JBoss Seam, que sana quase tudo, o struts fica a deriva.
Bom, relatei alguns prós e contras de cada um, já realizei projetos nos 2 frameworks, e conheço em parte do código fonte de ambos e modelagem.
Sem fosse fazer um projeto hoje, escolheria JSF tranquilamente.
Espero conhecer o struts2 eo menta para aprender mais.
Agora, se querem simplicidade, coesão e não precisam de componentes tão ricos assim, usem o Spring MVC, ou Spring + JSF/Struts. 