Según Issue 262: ProtoMembers with IsRequired=true aren't really required:
Actualmente, isRequired principalmente impactos serialización, obligándola a pasar por alto algunas reglas predeterminadas.
Cuando IsRequired es falso (valor predeterminado), los valores predeterminados no se serializan, p. un valor entero de 0 no se serializaría, un valor de 1 lo haría.
Cuando IsRequired es verdadero, todos los valores, incluidos los valores predeterminados, se serializan.
La deserialización usando protobuf-net actualmente no se ve afectada por el valor del atributo IsRequired. Sin embargo, si está utilizando una implementación diferente de Google Protocol Buffers para la deserialización, puede observar un comportamiento diferente.
Si agrega una nueva propiedad a una clase existente y deserializa un archivo serializado escrito antes de agregar la propiedad, simplemente no se establecerá la nueva propiedad.
Acabo de regresar de unos días de distancia. Lo veré más tarde –