According to Issue 262: ProtoMembers with IsRequired=true aren't really required:
Currently, IsRequired primarily impacts serialization, forcing it to ignore some default rules.
When IsRequired is false (the default), default values are not serialized, e.g. an integer value of 0 would not be serialized, a value of 1 would.
When IsRequired is true, all values, including default values, are serialized.
Deserialization using protobuf-net currently seems unaffected by the the value of the IsRequired attribute. However if you are using a different implementation of Google Protocol Buffers for deserialization you may see different behavior.
If you add a new property to an existing class, and deserialize a serialized file written before the property was added, the new property will simply not be set.