Ah, of course... The export (and apparently copy too) calls ToString on the property value to serialize it, and I was returning a type that didn't have a ToString implementation leading to the use of the standard ToString (which only returns the type name).
I've created a custom property type derived from PropertyData (stored as LongString). It works as expected except wen a page is copied or exported-imported, in which case the property value is cleared. Any clues to what might be wrong? Thanks in advance!