Your new proposed algorithm doesn't change the build volume.
What normally should happen is that the bed is moved towards the endstop at high speed. Due to this high speed, it cannot stop fast enough when hitting the endstop and thus moves a bit passed it. This is why there is the HOME_RETRACT_MM. It moves back this distance, and then moves into the endstop again at lower speed. Getting the exact position where the endstop is triggered.
The problem that we are facing is that on some machines, the bed is so well assembled and calibrated, that it drops down beyond the end-switch point. And then it currently only travels up 3mm, which is not always enough. If it travels up 7mm (as I just configured for the new firmware) and then move slowly into the endstop, we'll find the proper switch point again, consistently.
No build volume is lost, as the build volume is measured from the switching point.