Então, eu já trabalhei um ano com JSF 1.2 e Richfaces. Com o primefaces brinquei com ele em casa só.
Já trabalhei com GXT na empresa que estou hoje em dia. Hoje estou trabalhando com SmartGWT em um projeto novo. Gosto de trabalhar com as duas tecnologias, mas se você precisa de algo rápido e que possui uma comunidade ativa e que o suporte para as dúvidas é instantaneo, eu iria pro JSF (puxo no saco do JSF mesmo :P).
Vou da uma resumida entre o GXT (Gwt com EXTJS e SmartGWT):
O GXT foi criado pelo russo (acho que é russo) Sanjiv Gijan. Ele criou o framework, porém hoje, ele não da mais suporte para esse framework ele migrou para o SmartGWT e da o suporte lá, inclusive no fórum do Smart volta e meia ele faz uns comentários. Porque? Se eu não me engano a licença opensource do GXT é só até a versão 2,2 ou 2,5 (não me recordo) e quando o Sanjiv Gijan abraçou a idéia era que o framework que ele criou fosse LIVRE, porém a SENCHA mudou a licença.
O cara ficou indignado, e o maluco que criou o Smart chamou ele pra trabalhar com ele e criou uma versão Open e uma Enterprise (que possui coisas bem legais), porém a versão Free não deixa nada a desejar, hoje o Smart está na 3,1 que lançou há uns dias, e o Sanjiv Gijan junto com a comunidade migraram pro SMART.
Em relação a curva de aprendizado eu acredito que o JSF é bem maior e o período de tempo é curto, justamente pela quantidade de informação que existe. O Smart tá crescendo, te aconselho a dar uma olhada no GWTP (Google Web Toolkit Plataform) onde você programa com o Desing Pattern MVP, com injeção de dependencia, tudo bem transparente, ele abstrai um monte de coisa que tu implementa na mao com o GWT nativo.
Hoje eu iria de SmartGwt, acredito que em breve vai estar no mesmo patamar que o JSF, mas posso estar errado, olha o FLEX no que q deu 