Sorry, you are correct. I don't think unsigned overflow behaviour was defined until C99 though.
Anyway, in answer to the question, I would guess the reason was because of signed / unsigned type promotion.