I have an interesting way of doing this that I think will appeal to you. Rather than representing r as a function of z, represent r and z parametrically as a function of the contour arc length s: r = r(s) and z = z(s) such that
(dr)^2 +(dz)^2=(ds)^2
Next, define the contour angle θ of the bottle by tanθ=dr/ds.
We are going to determine the function θ=θ(s) which best fits the contour shape of the bottle. We do this as follows: Write the equations for the variation in r and z as functions of s:
\frac{dr}{ds}=sinθ(s)
\frac{dz}{ds}=cosθ(s)
These equations guarantee that the sum of the squares of the differential changes in r and z are equal to the square of the differential change in the contour length.
We are going to solve these equations for r and z as functions of s for a given prescribed variation in θ(s). We are going to be seeking the best representation of θ(s) that matches the contour shape of the coke bottle. To do this, we are going to express θ(s) as a cubic spline function of s, by specifying just a limited number of values of θ (say <10) along the contour, and we will seeking the set of θ values at these locations that minimizes the sum of the squares of the distances from the predicted contour to the actual contour. This will involve integrating the above equations multiple times, and varying the θ values at the prescribed points to minimize the deviation. Once we know θ as a function of s, we can add the following two differential equations (assuming the bottle thickness is constant):
\frac{dM}{ds}=2πr(s)z(s)
\frac{dS}{ds}=2πr(s)
where M is the cumulative moment with respect to z = 0, and S is the cumulative surface area.
The center of mass, as measured from the bottom of the bottle is M/S evaluated at the value of s corresponding to the top of the bottle.