Since a Set is unordered, why does it have the Index associated type, and functions for using or obtaining and index?
Why does Set have Index
So your complaint is on the duration of time that the iteration is stable now? Because the iteration has to be stable (produce the elements in some order, without incorrect repetitions, and not skip any elements) in order to obey the semantics of iteration. So there is a context in which set[n] must return consistent values (iteration loops), even though there may exist contexts in which calls to set[n] return arbitrary elements of the set.
And whether setIndex is an integer is irrelevant. Count from 0 to n-1 as the elements are returned. It's an ordering, and a mapping from integers to the set elements.
Keep in mind that this is all coming from the order that the ieterator produced. Whether or not the set is inherently ordered doesn't matter, the ieterator has to produce the elements in some order.