Why is 'Shader to RGB' possible in EEVEE, but not in Cycles?
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.