It's exactly because you are adding the SAME item to both lists, not a copy or duplicate of the item.
Try this:
'add duplicate items in both lists
'changes one item from a given list
Private Sub Add_It
For i= 0 To 4
Dim tmp As tpItem
tmp.initialize
tmp.sId = i
tmp.pId = i*2
tmp.pDesc= "Item :" & (i+1)
prgOrig.Add(tmp)
Dim tmp As tpItem
tmp.initialize
tmp.sId = i
tmp.pId = i*2
tmp.pDesc= "Item :" & (i+1)
prgWork.Add(tmp)
Next
End Sub
Create a new item (With a dim) and duplicate the item, you will then have a separate (duplicate) item in both lists, which you can change independently.