How to safely delete relation entity endpoint revisions (field_revision_endpoints)
The answer is no. I eventually had to circle back to this question and come up with a solution myself. The relation_revision table contains the relation + revision ids that match up to the field_revision_endpoints rows. Simply deleting rows from relation_revision would orphan the revision field data in field_revision_endpoint.

After poking around the relations issue queue, I found this patch which adds support for the Entity API's revision deletion mechanism.

Instead of patching the relations module, I used hook_entity_info_alter to register my own 'revision deletion callback' on the relation entity, which I based on the above patch and node_revision_delete(). I can now use the Entity API's entity_revision_delete() to cleanly remove the excess revisions in batches.