I just recreated the staircase, and found it actually somewhat easy to get the same problem, and I think it's related to excessive geometry cuts, although probably still caused by a bug. As I made the walls longer/shorter I got different results (or no bad results in some cases), one time it affected the wall where some tris had different lighting, another time the wall had a black triangle, and then I got the exact same problem as the OP, in the staircase itself.
All the problems with walls could be solved by making the staircase into a func_static, but the last one couldn't. The way I solved that one this case, that you might want to try, was by using rich_is_bored's 3rd setup (with a slight difference, but may be irrelevant -- see in spoiler below), and by making three func_statics out of it:
- one for all the boards
- one for both the big ramp and the big block
- one for all the leftover triangle-steps below the boards.