The index buffer represents triangles. Each triangle has 3 corners. The ints represent the vertex number for each corner in a triangle times the number of triangles. The index buffer doesn’t duplicate data. It just contains multiple references to vertices because each triangle needs it.
Only 8 vertices would draw smooth corners on the box in GL, so you need separate vertices for each side, so that they don’t share normals. This is why Box has 24 vertices.
That’s probably closer to answer what you asked.
This is why it appears to duplicate data. With 8 vertices, you’d get the same effect as if you created a box in Blender and set the vertices to “smooth”.
Sorry about all the edits, just improving a bodged answer. I misunderstood the question and answered without thinking first.