FWIW, this should not be true. Each resolve is a simple three-way merge; all P4Merge should get as its inputs as far as the file contents go are those three inputs (the base and two legs). The base and the "theirs" leg are determined on the server at the time that the resolve is scheduled (e.g. during "p4 integrate" or "p4 sync"), and the "yours" leg is always the local workspace file.
I agree, although it seems p4 merge has always been a little screwy (for decades). During this process I upgraded p4 merge from whatever version I was using (early or mid 2019) to Jan 9 2020 (latest at the time of my previous post) and the behavior's been essentially the same.
Just last week I was doing another merge that was much like this set-up (one file is outside the workspace, being merged into the workspace), and p4 merge saw the files as completely different, despite the real difference being less than 4 lines. Luckily only one had changes I wanted, so I was able to ignore its mess and take from source.
Before seeing the difference in behavior between merge and resolve with this issue, I had written off Perforce as just having bad difference analysis for years. If it's a bug, it's one they've been sitting on for a very long time, doing nothing but giving the whole system a bad name. I'm now not clear why they don't scrap it and let resolve do all the work, since it actually works!