"Debouncing" a switch only covers the mechanical dither (bounce) of the contacts. A switch can close at different times, almost arbitrarily.
But for example, take the time when the switch is pushed by it's detenting block. Now glue a chip to that block with a drop of oil -- it changes now a a different point, depending upon the thickness of the chip.
On my machine (at least the way I work), it's extremely important that home be accurate to a tenth. I often must abandon jobs for a day or two, then resume where I left off. If home isn't "home", I'm screwed.
My machine uses massive industrial limit switches, but only uses them to find "close to home", then uses the servo encoders' wheel index marks to find 'true' home.
LLoyd