What's the advantage of using this over something like XMLHttpRequest?
gRPC gives you guarantees on those inputs and outputs, along with a bunch of extra features. It's basically a layer on top of XHR.
The advantage of protobufs is basically static typing with backward-compatible serialization (you can add new fields), that's compatible with many server-side languages.
It's honestly an awkward fit for web apps, though. Basic things are different, like int64's aren't native to JavaScript.