syncoid will use mbuffer and lzop to improve network throughput during send/recv.
I strongly suspect that send/recv are single threaded. and syncoid deals with datasets serially. You could probably run multiple instances of syncoid (each on a different dataset) to see if you can gain more throughput.
If you're sending a single dataset, make sure you have mbuffer installed to help reduce burstiness.