Stairs that can be ascended, but not descended are an oddity caused by the way the Doom engine physics work. It is not a programming error, and creating such stairs is generally considered as erroneous level design.
The effect is seen when two steps are present with different ceiling heights, and the lower step's ceiling height is less than 56 units above the higher step's floor height (but still far enough above the lower step to provide the player room to stand on it). As the player moves up the staircase, the engine allows them onto the lower step because there are at least 56 units (the height of the player) of clearance. If the player continues to move forward up the staircase, first the horizontal movement is calculated, and then the vertical movement. So first the player is moved forward onto the upper step, then the ceiling height is checked and, seeing that the player has clearance, the move is allowed.
However, when the player turns around and tries to go back down, the engine disallows it because it tries to once again move the player horizontally before taking the vertical change into account. Because the upper step is within 56 units of the lower step's ceiling, it determines there is not enough room for the player to enter that sector. Consequently, the move is blocked.