“I still don’t fully understand the GC and why doing that fixed the problems.”
Epic’s GC knows about UObjects. GC will only look at properties with UPROPERTY to see if the UOBJECT is being referenced. No UPROPERTY at all on an UOBJECT, then that UOBJECT can be deleted as it is not pointing to any other object and as that object is not being held as a reference by another UPROPERTY since you were not using any UPROPERTY.