But I don't get why it works in this way
This is because to Corona the object's surface is a different thing, and the object's volume is a different thing.
Surface is diffuse color, reflectivity, opacity, etc.
Volume is absorption and scattering (and emission in case of CoronaVolumeMtl).
With your render time boolean you are affecting the opacity of the object you are cutting, so its surface becomes transparent, but the volume becomes intact.
Like Frood said, you can use your CDistance map to affect the object's absorption - i.e. set that object's absorption to white (=fully transparent) wherever that object's volume is inside your cutter object.
Hope that clarifies what's going on.