Tomcat
- Tiene mas tiempo en el campo.
- es un contenedor web con soporte de servlets y JSP ( http://www.edu4java.com/es/servlet/servlet1.html )
- Mas ligero, no "pre integrado" como glassfish, eso no quiere decir que no se pueda agregar componentes externos, queda a criterio del desarrollador.
- siendo mas ligero tiene menos complejidad y uso de recursos asi como de modularidad.
Glassfish
- Es un contenedor EE y es es la implementación de referencia de J2EE, maneja la ejecución de EJB, JMS, JTA, RMI, etc
- ya que dispones de los componentes anteriormente dichos se lo ve como una solucion más "empresarial"
- Menos tiempo en el campo
- Desarrollado por Sun Microsystems adquirida por Oracle
EJB: es.wikipedia.org/wiki/Enterprise_JavaBeans
JMS: es.wikipedia.org/wiki/Java_Message_Service
JTA: es.wikipedia.org/wiki/Java_Transaction_API
sobre la documentacion:
personalmente a ambos los veo bien documentados, mientras el ingles no sea tu problema.
sobre la estabilidad:
con las recientes actualizaciones tanto de tomcat como de glassfish los veo estables. el problema con tomcat es que mientras mas exigente sea tu aplicacion vas a tener que agregarle los componentes necesarios y eso iria por tu cuenta.
sobre la popularidad:
Hay mas desarrolladores usando tomcat, un ejemplo es la cantidad de preguntas en stackoverflow:
http://stackoverflow.com/questions/tagged/glassfish (5,467 preguntas)
http://stackoverflow.com/questions/tagged/tomcat (21,825 preguntas)
eso quiere decir que podrias encontrar problemas ya resueltos.
Aca encontre un articulo interesante, tomcat esta liderando seguido de jetty
https://plumbr.eu/blog/most-popular-application-servers-in-2014
Opinion personal final:
Todo depende de hacia donde va tu aplicacion, depende de que tan compleja vaya a ser, siendo algo simple yo optaria por tomcat, jetty, etc, en cambio si necesitas una aplicacion mas compleja y exigente vete por glassfish, JBoss, etc.