Now I think I see what's going on - are you getting the feat ID field you defined to populate the table, just the values are wrong?
If so, it is because you're doing it base on a line in your input file:
FeatID, pnt.ID, pnt.X, pnt.Y = string.split(line,",")
I didn't immediately realize you changed that, adding a separate id for poly it pertains to...so is it true your input file then looks something like:
FeatID, ID, X, Y
poly1, point1, x1, y1
poly1, point2, x2, y2
poly1, point3, x3, y3
etc.
...
...
poly2, point1, x11, y11
poly2, point2, x22, y22
poly2, point3, x33, y33
etc.
...
...
And then, provided I have correctly assumed that you have done that, then what isn't quite right is that when you are looping, you are retrieving values from the next line when the ID change is detected and you're incorrectly loading the next FeatID (instead of making a new var to 'hold' the last FeatID.