Does anybody know why?
Yes. Because D7 should never have allowed your case in point.
The reason objpas mode is more strict - in many ways - is to prevent programmers making mistakes.
Also as this is the case here: do never name a field the same as a parameter: that is a duplicate identifier!!. Whether some versions of Delphi allow it is not really the issue.
The issue is that Delphi versions vary between releases and so does FPC.
In your case it is obvious that Delphi never should have allowed it.
In {$mode delphi} there are some more places where the Delphi engineers made a wrong decision and our compiler team worked around it. (e.g. Like automatic pointer dereferences)
To summarize, Delphi is not the holy grail: just like FPC it contains errors, both real and logic errors. As do most softwares. (Like yours

)
In the end, you already got proper advice by others, simply swallow it and follow it because as far as I can tell it is proper advice. No need to add an extra example and it is certainly not a bug.