Por peso es mejor un archivo de txt, te recomiendo
pjjTextBase para dicho fin.
Y lei por ahi que es mas rapido un archivo de texto (flat file).
Por lo tanto yo te diria que depende del contenido que vayas a meter, por que si tu chat va a guardar solo 20 lineas y las demas las vas borrando puede que sea mejor un txt, pero si vas a guardar todo en plan log, es mejor una db, por que es mas limpio que guardar un txt de 300 MB como me dijo una vez Ing_amc...
Pero txt tiene un problema, y es que si tu chat es usado por muchas personas y usas una id para el mensaje, puede que se haga un "lio" con las ids al tener que insertar 2 a la vez... (por usar $ultima_id + 1 o algo asi...) y por lo tanto eso de que es mas rapido no sea del todo cierto en este caso...
Si miras hacia los grandes scripts de chats, pocos funcionan sin una db.
Tambien tienes SQLite, que es una especie de mezcla de las 2 "tecnologias", aunque no se mucho sobre el tema
Saludos.
PD: te recomiendo PjjTextBase por que es uno de los que me enamoro en ese sentido, aunque hay mas con mas funciones pero pesan un poco mas... enfin, busca por flat file y saldran muchos.