I did some research. The problem is caused in CoreNative.cpp.
In Function GetInstancedSubobject (Line 126)
We should check if instance is runtime instance first. If it is runtime instance, just use current value. Otherwise use the parent value. So I did some code change in Function GetInstancedSubobject like below,
2. Create New Blueprint in Editor from native class ATestBPChildGameModeBase, named as ParentGM.
3. Set SubObject in ParentGM as "parent"
4. Create New Blueprint in Editor from ParentGM, named as ChildGM
5. Set SubObject in ChildGM as "child"
6. Save all and close Editor
7. Reopen Editor, the SubObject in ChildGM is "parent"
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-102315 in the post.