OK, there is something going on here we don't understand. We have code being generated that we don't know about!

- First, are you using Arduino v.22 ?

- Lets add a couple lines of debug code to the G28 command in Marlin_main.cpp Please make it look like this:

case 28: //G28 Home all Axis one at a time
#ifdef ENABLE_AUTO_BED_LEVELING
plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data)
#endif //ENABLE_AUTO_BED_LEVELING

SERIAL_PROTOCOLPGM("??? Going to zero Z-Axis with offset of: "); // <---<<< New code to let us see what it thinks is the right thing to do
SERIAL_PROTOCOL_F(Z_PROBE_OFFSET_FROM_EXTRUDER,6); // <---<<< New code to let us see what it thinks is the right thing to do
SERIAL_PROTOCOLPGM("\n"); // <---<<< New code to let us see what it thinks is the right thing to do

saved_feedrate = feedrate;
saved_feedmultiply = feedmultiply;
feedmultiply = 100;
previous_millis_cmd = millis();

Once that is built and flashed, repeat the G28 and M114. We'll get this figured out with a few more iterations....