In the attached file (with history on), run Match on each end of the curve. Then move the first surface that the curve was matched to. History was lost as soon as the curve was matched at more than one end. Could Rhino keep history in this case instead?