Mmmm, good thought.
I tested it, and you're right:
SET record_new=%@XREPLACE[jjjj,\n\n,%record_new]
works correctly.
However, the code I use to set up the substitution is:
SET record_new=%@XREPLACE[\r\n\r\n,jjjj,%record]
which has been working.
If I change it to test your theory, to be:
SET record_new=%@XREPLACE[\n\n,jjjj,%record]
then it does not find any CRLR to substitute.
So Xreplace has a different meaning for \r and \n depending on whether it is the source or the target of the substitution.
Ugh!