You can use hermite mel command to get all five needed CVs for the curve.
= hermite <0.5>;
startPoint and endPoint will be the two end points of your surface curve which you already have. And for the startTangentPoint and endTangentPoint, actually every nurbsCurve's first two or end two CVs will automatically define a tangent for you, you just need to multiply this tangent by -1 to reverse the direction and offset it to the end CV of your surface curve, then you get your tangentPoint. finally use the hermite to get the middle CV.
Now build your curve with these 5 CVs, and write an expression to update the curve each frame.
btw: it's just an idea, not tested yet, may be you should just try it ![]()