but looking at the source code more closely, it's a weighted sum of different closures. That leaves importance sampling and other things more to the rendering engine,
Yes, exactly.
but I guess there's still closures written in OSL that could be used to get around the limitation.
It's in the road map to eventually allow closure primitive functions and integrators to be written in OSL. But for now, both are built into the renderer.