Yes it’s a bug in IE7 and under where the position:relative infers z-index:0 on the parent instead of z-index:auto.
This means that all parents are z-index:0 and therefore it doesn’t matter what z-index the children are as they will always be within a parent with a z-index of zero.
So in effect all parent list elements are z-index:0 and therefore according to usual browser rules the ones later in the html will sit on top of elements earlier in the html where they have the same z-index which is exactly what happens in IE.
There are two solutions.
You could add a class to each list element and apply a descending z-index in order so that each list subsequent lists gets a lower z-index than its predecessor which will allow the previous element to be on top.
Or you could remove the position:relative from the parent so that there is no stacking context but then only move the absolute element using margins.