Using greyscale takes twice as long as Jarvis dither

You have an 8-bit, 16MHz Ardiuno controller, so you’re likely hitting the processing speed limit.

Grayscale tends to produce one GCode instruction for every pixel of an image. Dithering will do that at the exact 50% gray point, but for lighter or darker areas, the dot density is lower, so there’s less GCode overall to process.

At 300 DPI, with grayscale, you’ll be making 300 GCode instructions per inch. At 1500mm/min you’re at almost exactly 1 inch per second, so about 300 instructions per second. I believe 8-bit GRBL handles about 250, so you won’t be going full speed.

Reducing the DPI will increase the speed it can go, or you could look into a 32 bit GRBL compatible controller.