Volumetrics clip through objects, they always render in front of everything
This is due to how renderers process depth. Basically they squish all depth into a range between 0 and 1. With large ranges, rounding errors will create visual glitches like clipping. You may already be familiar with this in the viewport and cameras for the view range of geometry, but volumetrics also use this. I'm not sure why volumetrics are so much worse at this, but the way to fix it is by giving blender less information to cram in.
This means reducing the range where it renders volumetrics or increasing the number of samples. Both of these settings are in render &gt; volumetrics.
Renderers bias toward objects closer to the camera so increasing the lower value is the best way to improve results. You might also be able to get results from the distribution slider which I think changes the bias on the renderer but I haven't been able to get anything out of it.
TLDR: Reduce the volumetric render range and increase samples.