But assuming we have WebGL in workers and also every WebGL Context runs in its own thread you could do this
I might be wrong, but I assume that GPU thread might be still shared between related tabs.
AFAIK the popular implemention of WebGL is via a GPU process (which also serves the browsers compositor), and all calls to WebGL get serialized, IPCed, deserialized and sent to the GPU process. In most implementations separate pages or workers do not get their own GL (or DX) context. Therefore the first thing to do isn't to monkey around with any frontend semantic, but making sure the backend can actually support asynchronous shader compilation natively, everything else is futile.