Use world brushes to define visibility, use func detail to detail the world. Arches, pillars, low walls, etc. The work exactly like world brushes, but they dont block visibility and do not affect the VIS process.
However, I have found problems with func_details, such as light coming from underneath a wall, etc.