<p>Do objects added to the SqlException.Data collection need to be [Serializable]?</p>

Well, strictly speaking, no... you can add any type to an Exception's Data dictionary... but why would you ask? What boundary do you think they are going to be serialized across?