No tiene nada de malo guardar todo el historial en la base de datos, están preparados para ese tipo de tareas.
De hecho, puede encontrar aquí en Stack Overflow un enlace a un esquema de ejemplo para un chat:ejemplo
Si todavía está preocupado por el tamaño, puede aplicar algunas optimizaciones a los mensajes grupales, como agregar un búfer a su aplicación que solo empuja después de un tiempo (como 1 minuto más o menos); de esa manera evitarías tener mensajes de solo 1 línea