There is no big difference in the traffic.
The synchronization is performed in a fixed frequency (specified by the sendRate property) when using the variable synchronization. However, it doesn’t send the values of all variables every synchronization tick, but it sends only variables whose values have been changed. As a result, both the variable synchronization and the RPC behave like sending information only when states have been changed, and there should be no significant difference in the traffic.
“How to Improve Performance” in the user’s guide says the RPC is more performant than the variable synchronization, but it is not on the traffic but is on the internal processing inside the SDK.
The variable synchronization has some overhead to detect whether a value of a variable has been changed. This overhead usually doesn’t matter, but if you have a lot of synchronized variables, and most of them rarely change, it could become measurable. If you cut down the synchronized variables and rewrite the codes to call RPC as a part of processing user inputs, for example, it may be possible to lighten the overhead.