Стоит ли использовать для этих целей MongoDB/MySQL?
PostgreSQL или MySQL, но не в коем случае не NoSQL, который выглядит как панацея только поначалу.
Правильная проектировка структуры БД - залог производительности и нормальной разработки.
Ошибки в структуре БД - бомбы, подложенные под развитие проекта и дальнейшую разработку.
Хранить все сообщения в одной таблице в виде текста?
Все сообщения в одной таблице. Но в базе у вас в итоге окажется 10-20 или больше таблиц с разными метаданными, без которых тексты сообщений не имеют смыла.
Если разбивать данные на шарды,
Не надо этого делать.
Что думаете про Node.js + Websockets для этих целей?
Node.js - тех, кто начинал свою программистскую карьеру с фронтенда, надо на пушечный выстрел не подпускать к принятию архитектурных решений в крупных проектах. Архитектура для архитекторов, js для фронтендеров.
Websockets - чат предполагает push данных с сервера на клиент, а для этой задачи websockets почти не имеет реальных альтернатив на сегодняшний день. То есть все альтернативы - это костыли из времен до websockets.
Как правильно хранить сообщения пользователей на разных серверах?
Для начала нужно определиться с тем зачем это нужно. Потом постараться избавиться от этой опасной идеи.
чтобы не пришлось потом переделывать на реальных пользователях.
Переделывать все равно придется. Такова суровая реальность жизни.