
Ahhhh, good catch.
That would make 0, 1 the first line, 2, 3 the next, 666, 4 the third, 5, 6 the fourth and 7 the start of a fifth which is incomplete. Because there is no index 666 in your array (and because hardware T&L is forgiving of this kind of thing) you don't get the third line and hence you only see lines 1, 2 and 4.
I should also note that the original NV primitive restart specifies that it's actually legal to use with all primitive types (even points), which I presume was an accomodation to allow primitive restart to be left constantly enabled and a restart index constantly specified. Not sure if that made it into core, although it's interesting that the D3D equivalent also behaves this way (with the exceptions being that you can't disable it and you're stuck with 0xffff or 0xffffffff as restart indexes).