One of the things i missed when people were discussing the use of func_lod's for the stair trims was that, as a solid entity it doesn't cut the faces of geometry. I realise this is a significant thing to miss and include at such a late point (5+ years), it is something i mention in discussions as they come and go, but when edges meet, they cause T-junctions that cut any connected geometries faces up. This includes, unfortunately, func_details. Which is why a staircase's stairs might be func_detail, but the trims func_lod. As each step would cause a tessellation in the trim. The engine has a limit on the amount of tessellations present in any one map. So a lot of brush based stairs will raise this limit quickly. Which is where converting stairs into models comes most in handy for larger or more manual brush detail intensive levels.
I thought i'd added this tid bit in, but after reading it i realised hadn't.
Also it should be added that rather than simply player-clipping stairs, it is useful to use the Blockbullets tool texture so that the stairs don't cause strange explosive habits where a step takes the rocket/sticky and the player otherwise well within the explosive radius takes no damage as the explosive "hit box" fires away from the player. This just makes gameplay more fluid than anything, smoothing out "wtf, i fired 4 rockets at his feet and he took no damage" moments. Blockbullets will have to be converted to func_detail however, as it cuts vvis.