The exact same thing happened to me in a specific page in my project, and a single RemoveAt seemed to remove two rows at once.
BUT, strangely, it only SEEMED to remove two; the second row would disappear visually, but it was still there, and it 'reappeared' when I added a new row!
It only happened with a certain number of rows: when I deleted row 2, row 3 would also disappear, but it came back once a 4th row was added.
I could never solve the issue. Instead I chose to rebuild the entire table after a delete action. I reckon it's a weird subtle bug in Java.