Why is 'Shader to RGB' possible in EEVEE, but not in Cycles? As a result of @Michael Macha 's comments on, and helpful edit of, this answer, it turns out my understanding of the differences between EEVEE and Cycles is a lot fuzzier than I thought it was. I get that BSDFs are closures? I understand closures to be functions carrying some of the external state that pertained at the time of their creation, waiting to be called with 'live' parameters?
But if BSDFs are closures in EEVEE, too, why is 'Shader to RGB' possible in EEVEE, but not in Cycles? Some indication of how data is shovelled around, and when, would be very helpful.
It's technically possible, but not that practical.
You turn Shader to RGB through rendering. Because in Eevee one object doesn't depend on the whole scene and because it does rasterization it's way faster, which makes it practical.
In cycles you want to render your scene into render layers, that way you get the Shader to RGB data, and then you can do postprocessing on it, which is the same like using that RGB output from shader in Eevee. Or you can bake the material (render into texture) if you don't need anything dynamic.