¿Por qué no puedo comparar un KeyValuePair <TKey, TValue> con el predeterminado

In .Net 2.5 Por lo general, puedo obtener una comparación de igualdad (==) entre un valor y su tipo predeterminado

if (myString == default(string))

in embargo, obtengo la siguiente excepción cuando intento ejecutar una comparación de igualdad en un KeyValuePair predeterminado y un KeyValuePair

Code Sample (desde un método de pre-extensión, clase ListUtilities estática proto-lambda :))

public static TKey 
        FirstKeyOrDefault<TKey, TValue>(Dictionary<TKey, TValue> lookups, 
                   Predicate<KeyValuePair<TKey, TValue>> predicate)
{
    KeyValuePair<TKey, TValue> pair = FirstOrDefault(lookups, predicate);

    return pair == default(KeyValuePair<TKey, TValue>) ? 
                   default(TKey) : pair.Key;
}

Excepción

Operator '==' no se puede aplicar a operandos de tipo 'System.Collections.Generic.KeyValuePair <string, object>' y 'System.Collections.Generic.KeyValuePair <string, object>'

¿Es porque, como estructura, KeyValuePair no es anulable? Si este es el caso, ¿por qué, ya que, presumiblemente, se implementó el valor predeterminado para manejar tipos no anulables?

EDITA

Para el registro, elegí @Chris Hannon como respuesta seleccionada, ya que me dio lo que estaba buscando, la opción más elegante y una explicación sucinta, sin embargo, animo a leer @Dasuraga para obtener una explicación muy completa de por qué esto es el cas

Respuestas a la pregunta(6)

Su respuesta a la pregunta