La respuesta a sus preguntas depende de los requisitos de su proyecto. Si no necesita las funciones de Java EE, como colas de mensajes, transacciones globales administradas por contenedores, etc., elija tomcat + spring.
También por experiencia, he descubierto que los proyectos que requieren mucha integración de servicios web, programación y colas de mensajes se realizan mejor utilizando parte de la pila Java EE. Lo bueno es que al usar Spring, aún puede integrarse con los módulos Java EE que se ejecutan en un servidor de aplicaciones.
Java EE 6 es muy diferente de las versiones anteriores y realmente hace que todo sea mucho más fácil. Java EE 6 combina las mejores ideas de la diversa comunidad de Java; por ejemplo, Rod Johnson de Spring Framework participó activamente en la creación de Dependency Injection JSR en Java EE 6. Una ventaja de usar Java EE 6 es que está codificando de acuerdo con un estándar, que podría ser importante en algunas organizaciones para el soporte de proveedores, etc.
GlassFish v3 es compatible con Java EE 6 y es bastante ligero y se inicia muy rápido. He estado usando glassfish v3 para mis desarrollos y es realmente fácil de configurar. Viene con una consola de administración muy fácil de usar que le permite administrar gráficamente su servidor.
Si está utilizando GlassfishV3 y JSF 2, puede aprovechar las funciones CDI de Java EE 6, que le permiten crear fácilmente conversaciones (por ejemplo, páginas tipo asistente) en JSF.
Dicho esto, el uso de Java EE 6 también requiere que aprenda una nueva API. Dependiendo del período de tiempo disponible, puede que no sea la mejor opción para usted. Tomcat ha existido durante años, y la combinación tomcat + spring ha sido adoptada por muchos proyectos web, lo que significa que hay mucha documentación / foros.