Because these guys that wrote this post processors are programmer's and have no machine experience or what is a correct G-Code format should look like
That feels a bit like a particular preference. Kind of like how some people are so used to inches, they feel uncomfortable working in millimeters.

The behavior of a machine tool based on all the standard G codes is fairly well specified. The specification is a bit weird in places to a modern eye, because they're based on how the original microcontroller interpreted the original code in the original FANUC controllers, and those microcontrollers only had a precious small amount of program storage, so the code had to be designed to be convenient for the controller, not for the operator.

The behavior of the "H" word is well specified, and can be provided anywhere in the program. To make a tool change do the right thing, you need to do it and the G43 before/at the first Z move, but you can do it at whatever point you want after the previous Z move.

Yes, people have preferences, and it's often wise to change as little as possible compared to what people's current preferences are, but saying that there is "only one right way" isn't particularly useful IMO. It of course depends on your environment -- in production with very long series and high quantities, you need a different kind of personality than in a R&D / prototype / short-run job shop environment. Flexibility is much more important in the latter, consistency is more important in the former, but that doesn't make one approach more "right." Just "right for certain applications."