So all you are doing is sending (during printing the first layer) a G92 command to change the absolute Z coordinate. So if you are printing a 0.4mm first layer and you send G92 Z0.425 you've just told the printer that the current level is not 0.4 anymore its 0.425mm. You haven't physically moved anything. It takes the printer a few seconds to get to this command as there is a buffer, it lowers the nozzle by 0.025 on the next gcode command because this next command will ask it to be at Z0.4 and it thinks its now at z0.425.
Likewise if you send G92 Z0.375 the printer thinks its too low and at the next line of gcode it raises the nozzle 0.025.
I created two macros one for each command, so I can press lower or raise from the paneldue screen, but you can do it from the web interface instead. Or if using a host like pronterface create some buttons with these commands.
If you want to print 0.3 first layers, your lower nozzle macro would be G92 Z0.325 and raise would be G92 Z0.275
There are three reasons why this is a functional workaround but not very satisfying are that its not instant, the firmware has to process the commands in the buffer before it changes z level, so its hard to see if you need to press it once, twice etc… If you press to lower 10 times you might get a head crash. (A good reason to use 0.025 rather than 0.05). The other reason is that if you're printing a cube the brim or whatever you print first won't have that many moves in it, therefore you don't get a lot of time to make the adjustment unless you set your print speed to 10% as you begin. Also you have to use the same first layer height each time, or your need two macros for each first layer height you routinely print with.
My solution to this to make an object, one layer thick, with lots of short zigzags or similar, you place it next to the object you're printing in your slicer, make sure you've set plenty of skirt and brim to give you extra moves in which to have time (and moves) enough to adjust the z height and then leave it to print the object.
Marlin's babystepping which I helped (a little) to test with them just sends extra step pulses to the z motor as you turn the encoder wheel and does not alter the coordinate system. So on the plus side its instant, you can set it very quickly and you can do it with any layer height and at any point during the print (though why you would want to do it at any other point than the first layer I could not imagine). They eventually implemented a readout on the lcd which summed the extra steps and divided them by your z steps/mm and which shows how much in millimeters you moved, so at the next print you could enter a z-offset either in firmware or slicer, so provided your printer's reproducibility is good the next print just starts at the optimised Z height.
I've actually given up using this as its now so well calibrated if I measure the nozzle to zprobe trigger point accurately, then calibrate the nozzle is 0.1mm above the bed everywhere and I can just print. Possibly adding an offset in slic3r for the next print if it was fractionally too squashed or too high.