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