After thinking about this a bit more, and reading Paul Lewis's article about rIC, I'm of the opinion that it's not the right fit.
rIC seems geared towards delaying a discrete piece of work, which will happen on the main thread, until there are a few free moments.
In our case, the expensive bits all happen in a separate thread, at some indeterminate future point in time, after the serviceWorker.register() has already completed.
rIC doesn't offer any guarantees that starting up the SW thread and precaching resources will happen when the main thread is idle, and I don't want to give developers the false impression that it does.