I would also prefer unsigned indexes but exactly because the compiler may assume that there will be no overflow, signed index access may be a bit faster and therefore preferable.
It always feels dirty deliberately using a signed type for something you know can never be neagtive just because that signed type has other properties you want.