In reply to Weston Ruter.

@Pete: to address the issue you mention, in my website, I have implemented snippets of standard SW functionality (eg: precache assets, store page in SW cache after visiting, etc) that both the theme and other plugins can subscribe to through standard WordPress hooks (eg: any plugin can hook in its resources to precache, etc). Then, from a template coded in PHP, I dynamically generate a single service-worker.js file from the input of several plugins.

This strategy (which I described in detail here) is a trade-off: plugins don't get to code their own more specific/customized functionalities, however the general use cases are covered; it is losing a bit of flexibility, but it is still very powerful and makes it very easy for any plugin to benefit from it. So I think that, given a sound strategy, having a streamlined solution for SW can be a very good idea.