...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.