The main reason would be if you ever plan on reading the message from
non-Java code. What you've stated is only true in Java because it has
no unsigned integral types, so protobufs have to use signed types even
when a message declares a field as unsigned. In any language that has
unsigned integral types, you would write -1 and the other side would
read 4294967295.
- Adam