This looks like a bug. I noticed this discrepancy also when comparing existing SAML 2.0 tokens we process and the tokens created by WIF.
In the WriteKeyIdentifierClause method of the Saml2SecurityTokenHandler class, the following code fragment exists:-
writer.WriteStartElement("SecurityTokenReference", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
...
writer.WriteAttributeString("TokenType", "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd", "urn:oasis:names:tc:SAML:2.0:assertion");
writer.WriteStartElement("KeyIdentifier", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
writer.WriteAttributeString("ValueType", "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID");
...
writer.WriteEndElement();
writer.WriteEndElement();
Probably need clarification from the identity team as to whether this issue is addressed in an upcoming WIF release.
Regards
Wilko31