With all respect, - you know that! - what you do is indeed follow the C syntax on msdn, whereas the Delphi translations take into account impossibilities like a Pointer not being nil and chooses a var instead of a pointer instead.
Well, that is one would hope. Without a public source, preferably usable in an automated matter, it is simply no contest. MSDN is open and fairly unambiguous, headers are semi automatically translatable.
So basically, yours is a philosophical point(and with an IMHO too positive view on Delphi header translations, I might add), mine a practical one.
The only other option is to one-by-one change everything to Delphi syntax, with umpteen breakages per release. No thank you.
Correcting obscure API references with ifdefs hurts Lazarus/FPC users more than Delphi users, since they must make a version dependent ifdef, and each case the exact version of the change must be determined.
While a minor change only needs one simple ifdef FPC, and problematic cases get preferential treatment, reducing those actual problems with magnitudes.