GameObject and Transform are not really interchangeable other than the fact that both types derive the UnityEngine.GameObject type, and as such a reference can not be kept, unless I make it a special case where I check the types being changes (old and new) and depending on that do a GetComponent on the old reference to fetch the new reference (in this case Transform).
I would prefer to avoid this special case to be honest. Do you really find it that much required?