Вообще не спец в этом, но банально из Википедии - оба формата должны подходить, но зависит от того, насколько передаваемые данные «свободны от схемы».
Как я это понял - если идут строки одной таблицы (сколь угодно сложной, но все по одному образцу), то Proto; если данные могут идти всяко разно по ситуации, и надо разбираться по получении, чё кого, то Bson. Это так, размышления диванного аналитика.
Protobuf, а еще лучше, просто научиться делать замеры, может оказаться, что тебе в json "чисел с плавающей точкой" даже в виде строк, за глаза хватает.