Checking trace output of rs.getTimestamp(i) shows a date string format that doesn't include milliseconds. Accordingly, when the setDate() call creates a Date object the milliseconds default to zero.
I also had to explicitly call toISOString() to force the issue and get a date string that includes milliseconds. Passing that string to the setDate() method then works as expected...