Because you can run it at minimum graphics intensity while programming, then you can use bigger textures as the hardware improves, and you can add in anti aliasing and bloom and whatever else tickles your fancy.
The things that make a game hard to run now are the same things that made it hard to run then, but they are just doing more of them.
The main challenge is to implement an engine that will allow the use of next-generation features. The games themselves are really a matter of creating objects with high numbers of polygons and such.
Take DX9 for instance, there are two types of shader model (2.0 and 3.0) and each had their own features and benefits. When creating an engine, they developed it using one of the 2 models which 3.0 was mostly preferred because of its stunning features in DX9.0C and is still being used in today's games.
Many games have attempted to use DX10 but they ended up putting an extra DX10 layer on top of DX9 Engines which isn't a true DX10 experience. I'm actually not aware of any games coming from a true DX10 engine. The CryEngine2 might be one but it looks as if they just added a DX10 layer. Look out for 3DMark Vantage as this will be a fully DX10 engine.
In order to "code" an engine that takes advantage of next-generation features, game developers have to partner with the platform under which the game will be built (Microsoft, XBOX, Playstation, etc) to get support from that platform. They also need to partner with other hardware providers such as CPU (Intel and AMD), GPU and similar (Nvidia and ATI) to get the latest driver support. All else is a matter of creativity and coding skills. And like infornography42 said, you can play the game at lower resolutions and with lower textures to test out new features.