This looks quite good, thank you for providing your scripts.
Note that, for the second method, you could create your cylinder directly at the desired position:
There is also the XCoredModeling.CoverWires() function that allows you to make a surface (i.e. face) out of a circle entity.
Last, but not least, note that the line model_to_grid_filter.MaximumEdgeLength is ultimately what determines the tradeoff between accuracy and computational cost of the interpolation (since it defines the resolution of the triangulated mesh on which the interpolation is done).