I've found it to be annoying in the other direction. A type system like protobuf isn't rich enough for the problem domain. We end up building a lot of additional validation into the servers and clients that could have been enforced by the service/types spec.
I have never found option 2 to apply in any meaningful fashion, though I'm sure others have done much more of this type of work than I have.