In all cases, the quality of the resulting plot will be a function of the distribution of the X and Y arrays, the number of sampling points and the 'shape' of the data be contoured.
Use functions to grid one-dimensional X, Y, Z (random) data
Note: The input data are on a global grid. Hence, the data are cyclic in longitude. The resulting plot clearly shows [left and right edges] that the natgrid function does not handle the cyclic situation well.
Note: The input data are on a global grid. Hence, the data are cyclic in longitude. The resulting plot shows that the cssgrid_Wrap function does handle cyclic data.
Given the resulting 'blocky' structure, it is suggested that the resulting grid be smoothed with (say) smth9_Wrap.
FYI: Setting opt=False would result in most grid points being set to _FillValue. This is because the number of 'observations' is small (N=500) and the number of grid points (MLON=73*144=10512) is large. Further, this option results in only observations surrounded by 4 grid points being used. In this example only 492 interpolated grid points would have a value. Punch line: only use the opt=False when there are many observations and the distribution is reasonable spaced.