Late, but I will add that it is not a bug, it is a feature... Microsoft.TeamFoundationServer.Client Variable class constructor - Developer Community (visualstudio.com)
So the trick with Serialize/Deserialize by @Kevin works. For Variables - I've created PublicVariable class to mimic Variable class and it does the trick.