There are several ways to center the text. One way of doing it is by using bounding. The bounding is the information associated with the geometry that tells what space is taken by that geometry. It can be a box or a sphere.
By default, Three.js is using sphere bounding. What we want is a box bounding, to be more precise
textGeometry.computeBoundingBox();