I think I see the issue now. It’s getting caught up due to the empty ObjectIndicesMap as you’ve noted. The only other place in the engine that I see that code is in SavePackage2.cpp. I’m not overly familiar with that part of the codebase, so I’m going to hand this case to somebody with more knowledge of that area of the codebase who can advise on this.
As a workaround and potential solution, you may be able to create a new subclass of the JsonArchiveOutputFormatter that overrides Serialize(UObject*& Value) if you wish to change that behaviour. It would complicate the deserialisation and adds assumptions to the formatter, but you may be able to serialise it in another form. Just be aware that there may be unintended issues if the RowStruct has pointers internally as well. SoftPath and SoftPtr will serialise as string safely though.
Best regards,
Chris