Udon variables that are synched are able to remove their header costs for every other instance of the same variable type. This only works if the variables end up next to eachother though when serializing. The problem is that the variables are sorted by their name, instead of their type, which leads to variables not ending up next to eachother properly. This leads to unnecessary extra header costs.
EXAMPLE 1
[UdonSynced]
public short a = 0; //(2 byte header, 2 byte data)
[UdonSynced]
public short c = 0; //(2 byte header, 2 byte data)
[UdonSynced]
public bool b = false; //(1 byte header, 1 byte data)
EXAMPLE 2
[UdonSynced]
public short a = 0;//(2 byte header, 2 byte data)
[UdonSynced]
public short b = 0;//(0 byte header, 2 byte data)
[UdonSynced]
public bool c = false;//(1 byte header, 1 byte data)