That would be because the original uses hard returns to make new lines, not word wrapping based on the defined Width of its Mtext box [and may not even have any Width defined], whereas the result of TXT2MTXT combining decides on a box width from the selected objects, and the new breakdown into lines is the result of mere word wrapping resulting from that width -- no, the carriage returns are not saved anywhere.
One thing you can do is to use the fact that the results from an EXPLODE command become the "Previous" selection set. Immediately after EXPLODE, try this:
(setq
texts (ssget "_P"); the resulting pieces, in a selection set, in order from top to bottom
A (cdr (assoc 1 (entget (ssname texts 0))))
B (cdr (assoc 1 (entget (ssname texts 1))))
C (cdr (assoc 1 (entget (ssname texts 2))))
); setq
Combine them with TXT2MTXT after doing that, if you still need them combined.
That assumes three and only three lines in the source. If there might sometimes be different numbers of lines, that can also be accounted for with a little more sophistication in the code.
EDIT:
Another good reason to do it that way [i.e. before recombining if needed] is that depending on the relative lengths of different lines in the hard-returned version, the breakdown between lines can come out differently in the TXT2MTXTed combination than it was in the original:

I think TXT2MTXT determines the resulting Mtext box width from the longest line among those selected, and since it strings the entire combined content into one line without returns, leaving the line breaks to word wrapping, the shorter pieces in the upper lines in this example get shifted because more of them fit in that width.
Kent Cooper, AIA