I generally agree with the author, and Google style guides generally discourages use of unsigned types (even in C++) for anything that isn't actually a bag of bits.
I don't know how many strange issues I've tracked down that amounted to "this protocol buffer has a uint32 field, and surprise now the value is negative in Java and oops there was a check that cared about that." At least five or six issues.
At least when it comes to serialization, enforce invariants above the serialization layer.
I would love an unsigned byte type in Java though. What a pain.