Por que não posso comparar um KeyValuePair <TKey, TValue> com o padrão

In .Net 2.5 Normalmente, posso obter uma comparação de igualdade (==) entre um valor e seu tipo padrão

if (myString == default(string))

No entanto, recebo a seguinte exceção quando tento executar uma comparação de igualdade em um KeyValuePair padrão e um KeyValuePair

Code Sample (de um método de pré-extensão, classe 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;
}

Exceção

Operator '==' não pode ser aplicado a operandos do tipo 'System.Collections.Generic.KeyValuePair <string, object>' e 'System.Collections.Generic.KeyValuePair <string, object>'

É porque, como uma estrutura, o KeyValuePair não é anulável? Se for esse o caso, por que, como, presumivelmente, o padrão foi implementado para lidar com tipos não anuláveis?

EDITA

ara o registro, eu escolhi @ Chris Hannon como resposta selecionada, pois ele me deu o que eu estava procurando, a opção mais elegante e uma explicação sucinta, no entanto, incentivo a leitura de @Dasuraga para obter uma explicação muito abrangente sobre por que isso é o caso

questionAnswers(6)

yourAnswerToTheQuestion