Ae you testing this with the reported machine position or with an actual test indicator?
Im getting around +/- .0004(inches) with IR switch and +/-.0006 with clicky switch with roller lever. ten hits discarding the lowest and highest avg the rest, with a brown and sharp 50 millionths test indicator (inches) it was calibrated 5 months ago. first touch was 3000mm/min second @100mm/min. i dont care what the machine says its at the indicator doesn't lie.
I don't do sensorless homing running your machine into a wall to home it just doesn't seem like a good idea to me.
I want to make a tester with an as5600, esp32 and a little lcd to keep track of the rotations as sort of a lost steps checker i can slap on if i suggest shennanigans are afoot if i zero it at x0y0 print go to x0 y0 it should read 0
either switch is accurate enough for a toolchanger. btw real cnc mills have about 5-10 of the clicky type switches in the actual tool changer mechanisms to tell the control where everything is at incase something doesn't get where it needs to be on time the tool change cycle will alarm out and stop before it starts self disassembly.
your not really after accuracy you want repeatability. if it repeats accuracy is the easy part.