glTF export has twice the vertices it should
glTF is a last-mile format.  It stores its mesh data in a ready-to-load-onto-the-GPU kind of state.

But the graphics hardware doesn't want the same vertices that artists want to see in Blender.  At the hardware level, there are "vertex attributes" for things like normal vectors, UV coordinates, etc., that must be specified per-vertex, not per-face.  Likewise, quads and N-gons are not welcome at the hardware rasterization layer of many devices, including mobile devices, which generally accept only triangles at that layer.

So a finished, exported glTF will be fully triangulated, with all discontinuous UVs and all discontinuous normals separated into co-located vertices.  This way, when the glTF arrives on a client device for rendering, it should not require the client to spend much in the way of cycles or battery power processing the raw mesh data.  It should just load into the local graphics API and render immediately.

This does mean that if you load one back into Blender though, you'll end up with these un-merged verts, and any faces that weren't triangles will be cut into multiple faces.