In many cases, this is not possible. A planar surface with a hole in the middle is a good example.
Rhino does have a ShrinkTrimmedSrf command which will contract the underlying untrimmed surface close to its trimming boundaries (check the help file for details). In RhinoCommon, you would use Rhino.Geometry.Brep.ShrinkFaces. But again, this only works in certain cases.
On the two surfaces, I would find all of the naked edge curves (edges with a single Brep face). Then I could compare the edge curves between the surfaces until I found the two that matched (within some tolerance). Curve.ClosestPoint will be a useful function. Curve.GetDistancesBetweenCurves might be helpful too.