To smooth a curve you should first reduce the number of points per set by either gr_reduce, gr_del_double or gr_spline (with a small number of output points). Afterwards the gr_spline curve is called with the number of points needed.
gr_reduce -n 8 -last | gr_spline - 160 -arc
The -last Option in gr_reduce makes sure, that the last point of each set is printed out in any case. This is needed, in this case it makes no sense to loose the information of the curve endpoint. But, if using gr_spline by default, without -arc, the spacing of the xknots is of equal distribution which means, that the same number of points will be calculated between to neighboured input points That would cause a point accumaltion in the last interval.