If I’m not mistaken, any rotation, regardless of its center, should have an equal influence on the resulting rotation, but a potentially different outcome for the resulting position.
With this in mind, returning a rotation to Quaternion.identity should require a rotation in the same direction, regardless of where the center of that rotation is based.
Eliminating any rotation can be done by multiplying the rotation by its inverse:
identityRotation = currentRotation * Quaternion.Inverse(currentRotation);
This, however, is still a Quaternion result for a rotation. RotateAround(), however, is essentially an extension of AngleAxis().
Well, fortunately, we can represent any rotation with a single Quaternion, which means information about the Quaternion can be derived in many different ways. Incidently, the Inverse Quaternion rotation can even be skipped over by making use of Quaternion.ToAngleAxis().
The single rotation necessary to go from identity to current rotation can be translated into an AngleAxis rotation which can, in turn, be used to undo that rotation just as easily.
// C#
// First, get current rotation
float angle;
Vector3 axis;
currentRotation.ToAngleAxis(out angle, out axis);
// Next, use that rotation and go the opposite direction toward zero.
transform.RotateAround(centerPoint, axis, -angle);