I read an article about this. It's actually because the level has slopes in it. All levels with slopes in them have different terrain detection.
The first difference is that you get ejected upwards instead of to the right, and you get ejected upwards VERY FAST. This stops you from glitching through slopes. The check for Mario landing is only performed when his vertical velocity is downwards, so Mario cannot land if he is still rising from a jump. If Mario were to rise slower than a slope, he would go into the slope, so to correct this, the game ejects Mario upwards. (It also prevents Mario running from a flat portion of ground into the body of an upward slope for more than 1 frame)
The second difference is about standing on the corners of blocks. Mario can stand on the corner of a block if and only if he is in a level without slopes. Normally, Mario can stand in such a way that his center is off the side of the block and only the very edge of his graphic is touching the block, allowing him to seemingly stand in midair sometimes. However, in levels with slopes, Mario's center has to be on the block, and we get a few less pixels of extra movement. This has to do with the fact that it allows Mario to run from a flat portion of ground, to a downward slope seamlessly without running off the edge into the air, and falling onto the slope.
Without the ability to stand on the very edge of a block, we lose the ability to do a walljump. With the ejection upwards instead of to the right, we lose the ability to fall through blocks (because it will push you upwards, back on top of the block.)
Reference: "Programming M.C. Kids" (Under: Terrain)
http://games.greggman.com/game/programming_m_c__kids/
This article describes terrain detection from a programmer's point of view and makes several references to Mario 3.