While I'm glad I spent some time looking at the pulses under an oscilloscope, what I found was that the minimum stepper pulse was working. How did I do this? Well, my DSO scope has only a 10us option for its finest sampling setting, so instead I increased the minimum pulse to 30us...and was able to measure it just fine. Pulse count, as well, was right down the line.
But I began considering something different, something I should have considered earlier.
The display controller communicates movement using float numbers for the GCODE injected. Arduino has the option to have very small runtime libraries, without the ability to print floats or parse them. The homing moves (G28) inject distances directly. After looking for a bit, I realized I hadn't selected a runtime with float support, so I went back and adjusted my settings--and it moved.