Причина, по которой это происходит, заключается в том, что rich-editor является редактором xhtml.
В xhtml большинство тегов (за исключением тега PRE) по умолчанию объединяют несколько пробельных символов в один пробел.
Чтобы преодолеть это в tinyMCE, вам нужно создать таблицу стилей, содержащую:
* {white-space: pre;}
И ссылаться на таблицу стилей как content_css при инициализации редактора.
Имейте в виду, что пока вы сохраняете свой формат, он больше не будет WYSIWYG из-за характера пробелов в HTML.
Другой вариант - обернуть ваш код в элемент PRE, но нет никакой кнопки, чтобы сделать это по умолчанию в tinyMCE (или, как мне кажется).
EDIT:
Как уже упоминалось в mikl, tinyMCE также имеет опцию конфигурации для предварительно отформатированных