acs_object__delete already deletes any permissions on it, so party delete should only have to delete the grantee_id case. This certainly looks like an oversight.
It would seem that acs_object__delete would be the place to remove the acs-rel rows ... looks like another oversight.
Both of these problems appear to have been there since ACS 4.x day one.
The context_id thing seems dangerous IMO, as you're changing who can do what to your orphaned objects. This is why the standard idea of "deleting" a user is to change their status rather than "nuke" them.
Some day remind me to through out the datamodel and to rewrite it using "on delete/update cascade/set default/set null" operators to maintain referential integrity as the SQL standard anticipates one will do, OK?