Bah!! ... the TEMP flag doesn't always get set - and it certainly doesn't get set by the XSub. Whether it gets set or not depends upon whether I assign the return of Rmpc_realref() to a variable or not. I rewrote the perl section of my test script, assigning the return value to a variable, and the TEMP flag disappeared altogether.
It looks like I'm unable to bless this object into package Math::MPFR - if I do, I invariably get a segfault when DESTROY() is called. I can't see any way of enabling DESTROY() to distinguish between the 2 "types" of objects.