Add the branches and the points in index order.
For Each doesn't ensure any particular order, so use an indexed For for these cases.
Dim newGeom, newPointSet
Dim geom, branch, point
Dim i, j
For Each geom in geomSet
For i = 0 To geom.BranchSet.Count - 1
Set branch = geom.BranchSet.Item(i)
For j = 0 To branch.PointSet.Count - 1
Set point = branch.PointSet.Item(j)
Next ' j
Next ' i
Next ' geom
It's fine to use For Each for the geoms, since there order doesn't matter (unless it does!).