There is no problem in reality with this sub, I hope I can explain and if I err, surely other guys here may as well correct me.
You populate your list with objects. The array cells() is just an object here. So, when you want to read its contents, by getting it from the list, your output will be the most recent values set in your array.
Now, I am sure there are elegant ways of storing these variables in the list and getting them back, even though I would choose to use a 2d array for this purpose.
Margret suggested another thing, if you really want to populate the list with separated items. The code below works ok.
Dim lst As List
lst.Initialize
Dim cells(5) As String
For i=0 To 4:cells(i)=i:Next
Dim temp As String
temp=cells(4)
cells(4)=""
lst.AddAll (cells)
cells(4)=temp
Dim ret As String
ret=""
For i=0 To lst.Size -1:ret=ret & lst.Get (i) & CRLF:Next
Msgbox(ret,"ok")