As far as I understand it, traditionally a Mesh would only have single precision vertices. To keep this API going forward, but also be able to support double precision vertices, the support for this has been “bolted on” (not meant in a negative way).
So the default mesh.Vertices collection will still use single precision, but if UseDoublePrecisionVertices has been set to true, the storage will be in double precision.
To access in double precision, you can use mesh.Vertices.SetVertex(int, Point3d) or mesh.Vertices.Add(Point3d) to set/add a vertex in double precision, and mesh.Vertices.Point3dAt(int) to get a double precision vertex. This also works if UseDoublePrecisionVertices is not set to true, but then the storage will be in single precision.