Newtonsoft explicitly addressed this question in Issue #401: Object reference equality should be used when checking for circular references:
I prefer the current behavior which lets devs customize logic by overriding Equals.
Besides, this is a big breaking change.
But then later added:
Added EqualityComparer to JsonSerializer 3cc797c.
This enhancement added support for JsonSerializerSettings.EqualityComparer which allows the default behavior of calling object.Equals in reference loop detection to be overridden in settings:
public IEqualityComparer EqualityComparer { get; set; }
Gets or sets the equality comparer used by the serializer when comparing references.