I did a deep dive on what causes phantom BSP a few weeks ago and was able to develop a tool to fix it in compiled scenario_structure_bsp tags. I still suggest you first use the classic tricks like adjusting geometry, ensuring faces in flat surfaces are co-planar, avoiding high poly dense geometry, and preferring 90 degree or shallower angles between faces. However, in a pinch you can use Ghostbuster to fix the tag for you. The tool works by looking for bad BSP3D nodes with dividing planes which incorrectly assume one side is outside the map, and sets that side's child to be the same as the opposite side of the plane. This doesn't have any negative side-effects because the fixes happen deep in the BSP tree where some additional collision checks are still cheap.
Ghostbuster is a Python command line tool based on Moses' Reclaimer library. You can find installation and usage instructions at the GitHub repo:
https://github.com/Sigmmma/ghostbuster/
I've also created a c20 page for it:
https://c20.reclaimers.net/h1/tools/ghostbuster/
I have tested the tool on Danger Canyon and Blood Gulch and observed it removed the known phantom BSP in those maps once recompiled. It has been used on 1 custom map to my knowledge. Given that this is fairly new and only tested for a few maps, exercise some caution and back up your BSP tag before modifying it. Let me know if you see any bugs and I'll try to bust those too