Ok old thread but I think I figured something out:
The snapping of the icing to the donut's surface works just fine. The meshgrid vertices are perfectly aligned with the donut surface. However, if I check how they looked like before I applied the dragging to it, I can see that the vertices are actually a fair bit ABOVE the donut.
The clipping through the donut only appears after the icing vertices are snapped onto the surface of the donut.
The problem is the following: The thickness of your mesh extends from the surface downward. So if you snap your icing onto your donut, the thickness will always be below the donut's surface, because that's the starting point of the thickness. What you need is for the thickness to grow in the opposite direction, so a negative thickness:
Observe the gap between the icing and the donut before dragging:
This is the clipping at the same place in object mode
If you use a negative thickness for your icing, the thickness will grow upward instead of downward, so the icing will no longer dissapear into your donut because it extends from the donuts surface upwards: