Видимо, связано с авариями переполнения. Представьте себе такую штуку: −128 + 255 = 127. Если в процессоре будут аппаратные аварии переполнения, это самое переполнение и произойдёт: −128 − 1 = ???. Беззнаковый тип аварий переполнения не вызывает.
UPD. Так и есть. В Си знаковое переполнение — UB: такое переполнение может разделить с остатком, вызвать аварию или упереться в границы. В GCC есть ключи -ftrapv и -fwrapv — что делать при таком пререполнении.
Беззнаковое — обязательно деление с остатком.
UPD2. Стандарты Си и LIA несколько противоречат друг другу, и можно предположить, что знаковое переполнение зависит от реализации. Это не UB — можно сделать хороший код, полагающийся на такое поведение. Но если x86 так поступает, то не обязательно, что так поступают все.