rotary dial jogging isn't part of GRBL, so you only have two choices here:
1) Simply use the PC to send your jog commands
2) use a secondary arduino that will convert your rotary encoder movements into step / direction pulses.
If you're going to attempt the second option, you again, have two options:
1) send the step data directly to the CNC shield, using G-code generated in the encoder arduino.
2) send the pulses directly to the steppers, bypassing the CNC shield altogether by using seperate stepper drivers (Such as the bigeasy stepper driver)
If option 1) Simply code the encoder arduino to translate rotary encoder movements to usable g-code and send to GRBL arduino after movements have stopped for Nth amount of time (to keep from overflowing GRBL's buffer, you can't simply stream in a bucketload of "move 0.01mm" commands and still be useful)
If option 2) Simply code the encoder arduino to send the appropriate pulses to the stepper driver (bigeasy) as the encoder generates pulses. because the pulses are being sent to the stepper driver without a buffer, and directly to the stepper motors, you should get pretty close to instantaneous results.
However, doing so will nullify GRBL's positional data, and you will have to zero out the X/Y/Z positional data after using the rotary encoder.
Also, there is no safegard against pulses being generated by the encoder why GRBL is running, so you may want to add a few additional hardware measures to safegard against this. such as, diodes between the stepper motor wires andCNC shield, as well as between the motor wires, and the bigeasy. To keep pulses from one from traversing into the other. Another step i would recommend, is a physical switch on the encoder arduino that enables / disables the encoder from sending data. This way you don't accidentally "bump" the encoder while the machine is in operation.
Hope that made sense to you, and good luck :D