Если картинки/файлы не большие, то можно и в самом сообщении - одним запросом будет получены и сообщения и файлы, если крупные - то выносить в gridfs/файлы (например как в slack).
Если файлы должны отдаваться только авторизованым (имеющим права), то хранение на диске особо преимуществ не даст (т.к. при раздаче веб сервером, он по прямой ссылке отдаст файлы кому угодно).