The setter of JsonSerializerSettings.DateFormatString has a hidden side effect: It sets a field telling the writer (through the serializer) whether the property has been set - even if setting the property to null:
https://github.com/JamesNK/Newtonsoft.Json/blob/666d9760719e5ec5b2a50046f7dbd6a1267c01c6/Src/Newtonsoft.Json/JsonSerializerSettings.cs#L321
So when using AddNewtonsoftJson and setting DateFormatHandling = DateFormatHandling.MicrosoftDateFormat it will not be used by the serializer, because ShallowCopy sets DateFormatString (which takes precedence over DateFormatHandling) and thus triggers the above behavior:
https://github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Mvc/Mvc.NewtonsoftJson/src/NewtonsoftJsonOutputFormatter.cs#L179