Lazy programming.
it's actually a great design feature, it gates player from these areas until they are ready to move on.
There are other design features way more elegant to prevent players from going to a higher level area while maintaining a cohesive world... You can see it in many games... Generally, gamers like seamless transitions and dislike loading screens, hub worlds, instantiated areas, and things like that... The reason is simple: people like to feel immersed in a fantasy world, and all that loading screens and separate areas break the immersion.
I would say it actually makes more sense to have layers comprising independent worlds with their own functionally infinite space than to try to somehow fit completely alien landscapes into the default world.
Although I guess you could expand the 256 y limit. The nether would then become 256y under 0, the end 256y above 255. Although 256 itself is limited, even within default itself.
I'd still like to see a "realistic" worldgen. Something that could produce continents with like that of Blightfall, that are then tiled to fill the world, would be nice.
Yeah, that would have been a nice solution... Instead of the current chunks of 16x16 and 256 blocks tall, something like cubic chunks that make worlds with a virtually infinite height limit... This way you could have different layers of difficulty, with the Nether as the deepest layer and the End as the highest... There are interesting ways to prevent players from going too deep prematurely, like adding layers of different stones with different hardnesses, like in the mod Better Than Wolves.
But well, as I say, Notch went for the easy design approach, which is making a new Java class and call it "Nether" without bothering about world cohesion... I don't blame him, it's hard to make a game so complex like Minecraft being only one developer or two (I don't know if Jens Bergensten was working with him already at that time).