A work around is to use the HtmlGenericControl instead of the HtmlAnchor.
HtmlGenericControl href = new HtmlGenericControl("a");
href.InnerText = "Google.com";
I'm still interested in determining what causes the href to be removed from the control when cached as a HtmlAnchor.
We've ruled out an overall problem with the AttributeCollection since the Title attribute is cached properly. Anyone else have an idea?