Well, it's that easy: I can't turn off flash with grayscale. The driver does the flash, the refresh ioctl() is actually the same in both cases. I did not analyze the kernel driver yet (which is in the linux kernel source bundle from Amazon). But it might be buried even deeper in the eink controller, with (currently) not much options to change that behaviour.
I'm not sure how grayscale is archieved in the first place, BTW, but I think it might be an interference induced dither micro-pattern. Maybe it's too hard to calculate this (going from gray to gray would need to carefully switch within the pattern micro-resolution). when you're not coming from strictly black and white.