Just to add to @suever’s answer, you there’s no reason why you can’t create the Axes and then plot both the surface and the scatter points on it. Then there’s no need to use ax.hold():
# Create the figure
fig = plt.figure()
# Add an axes
ax = fig.add_subplot(111,projection='3d')
# plot the surface
ax.plot_surface(xx, yy, z, alpha=0.2)
# and plot the point
ax.scatter(point2[0] , point2[1] , point2[2], color="green")