Well, they shouldn't be negative, but who among us hasn't ever made a programming error that ended up computing the wrong value for an index – a negative index or one that's too large.
You'll note that C uses size_t for indexing, but also converts values between integer types automatically, which is convenient if you didn't make any mistakes, but it can be dangerous. Consider this program:
It prints this on a 64-bit system:
In Julia, we tend to use Int everywhere because it's often annoying to work with unsigned integers and on 64-bit systems at least, Int is plenty big for all indexing needs, despite being signed. As a result, you need to check for negative indexes.