How about dumping the encode queue out to a file?
This, I think, would provide facilities for two features. One, in the event that the program is killed for whatever reason, grip has something that its state is saved to - allowing the program to pick up where it left off. Two, it allows for facilities to pause (oppose merely aborting) an encode.
To explain, in the event that the encode has to abort, if a user has a good sized stack of CDs that they're in the midst of ripping, since the encode queue is stored in a variable, that variable dumps when the program is killed for whatever reason, or if the user orders the encode to abort. The side effect is that, in either case, the user has to backpage through the CDs and re-rip-and-encode them. The files that are still stored as ripped and not encoded are merely skipped, but it's still time consuming.