Ну вообще выглядит волне логично, учитывая наследование, ведь у каждого уровня наследования свои проверки. client == person скорее всего вызывается обычный Equals(obj), где первая проверка - obj is Client. А Person == client, там скорее всего Equals(person) напрямую
В моем мире равенство коммутативно, например