Creio que nada, Leonardo. A questão é que o JSF já tem muita coisa pronta: ajax com integração com componentes (com poucas linhas você faz um ajax que atualiza uma tabela automaticamente, por exemplo), componentes visuais ricos e já integrados ao modelo do framework, extensões (além das implementações existem diversas extensões com componentes extras), forte integração com o Java EE (que o Turini citou ser também um forte do VRaptor), enfim.. só que tudo isso fica totalmente abstraído e você não tem muito controle (digo a parte view-controller).
Existem diversas bibliotecas com extensões de JSTL também, bem como estamos bem servidor de frameworks JS que fazem essa "ponte" entre o controller e os componentes da página. O AngularJS vem se destacando muito nesse sentido (estamos até estudando sua adoção aqui), mas se você prefere o plain old javascript com um grau de facilidade o JQuery já é fenomenal... enfim, eu também prefiro action based mas temos que reconhecer que com JSF você aprende uma tecnologia só. Trabalhando por fora, voce tem que aprender (ou ter algum especialista no seu time) que saiba lidar bem com o front end (digo javascript) pra fazer a integração.
Em suma: produtividade tem seu preço, e geralmente é inversamente proporcional ao controle que você tem sobre o código. Pra voce ter idéia, trabalhei em um site web comparador de preços cuja diretriz era usar simplesmente a API Servlet e ponto final. A stack era: JSP+Jquery, HttpServlets e as classes de backend (sem JPA ou hibernate, queries SQL usando JDBC e mapeamento dos resultset's nas entidades na mão). Motivo? Bom, o cara que nos contratou deixou bem claro que queria estar o mais próximo possível do código, pois tinha medo de empilhar frameworks demais e em caso de um problema de performance, por exemplo, ficar vendido. Paranóia? Talvez. Sou um pouco mais meio termo, alguns frameworks já estão amplamente testados e validados pelo mercado como o próprio hibernate, mas o cara tem seu ponto e não deixa de ter razão de certa forma..