You're not the first to complain. I've thought the same ever since I stumbled into the various undocumented incosistencies.
Interestingly, you CAN get GTRR v6 behaviour in one special case. If you are working with a self join, use GTRR with the current layout option and you'll get the original no match = zero found set behavior.
Otherwise, you have to use either a test such as isempty(relatedtable::Keyfield) just before the GTRR or Get ( LastError ) just after the GTRR to avoid potential catastrophe.
Note that GTRR also has "special" features when triggered when a portal row has the focus and the Portal uses the same relationship. In that case, the current row of the portal will be used to make that record the current record of the found set GTRR generates. However, if the current portal row is empty (bottom row in a portal where you can add new records.), you get the same "no match = no change in layout/found set" behavior as when there are no matching records at all in the general case. (The key difference here is now you can have matching related records in the portal but GTRR still fails because there is no record in the active row to select.)