Thrift определяет, как представлять сложные данные, чтобы их можно было записывать и читать на разных языках (следовательно, он имеет IDL для определения типов, которые будут транспортироваться). Он также определяет простые средства для транспортировки такого отформатированного сообщения между двумя конечными точками (иначе говоря, передача в трифтах).
С другой стороны, ZeroMQ великолепно показывает, как вы можете передавать сообщения между конечными точками, чтобы получить различное поведение, например, один к одному, один ко многим, много ко многим, и разные ожидания скорости и надежности таких передач. А что касается самого сообщения, это просто капля в ZeroMQ, и приложения должны найти способ кодировать, декодировать их.
Так что, если у вас есть сложные структуры данных, но простые шаблоны обмена сообщениями, вы можете опираться на экономную сторону. Если у вас есть простые данные, но сложные шаблоны обмена сообщениями, вы можете опираться на ZeroMQ или что-то подобное (AMQP).
А если вам нужно и то, и другое, вы можете использовать THrift и ZeroMQ в паре, экономить для форматирования сообщения и ZeroMQ для его транспортировки.