IEquatable < Т > может быть объявлено контравариантным в T, поскольку он использует только T во входной позиции (или, что эквивалентно, U, являющийся подтипом T, должен подразумевать, что IEquatable <T> является [подтипом] IEquatable <U> ).
Итак, почему команда BCL не аннотировала его (для С# 4.0) с ключевым словом "in", как это было со многими другими универсальными интерфейсами (например, полностью аналогичными IComparable)?