...and continuation marks, and thread-privates.

What's the motivation for requiring equal? to distinguish different ones?    Debuggability via distinct printed representations perhaps?

The problem I see is that R7RS does not specify the behavior of equal? on two records that are not eqv?

On implementations where equal?  treats same-typed records as if the fields were vector elements, one will need something like incrementing integers in a field to distinguish these objects.   While that would enhance debuggability, it shouldn't technically be necessary for this application.