The Nvidia FX series cards take a hit in DX 9 games because they have issues with texture rendering vs the ATI cards setup. This is less true than it used to be with the right drivers, but there are certain inherent hardware limitations the FX cards cant overcome. The biggest slowdown of a 5700 vs a 5900 is the memory bus width. The FX 5900 cards have a 256 bit memory bus, whereas all the other FX5xxx cards have a 128 bit bus. Think of it as bandwidth. Two ways to make the bandwidth increase are to increase the bus size, and increase the memory speed. Technically, you can push memory fast enough to pass up slower memory with a wider bus. In reality its not likely.
As far as the Nvidia vs ATI diff, heres the breakdown. Its in the pipes.
If you look at the graphics card charts at Toms Hardware, it shows a Pipeline configuration. 4x1, 4x2, 8x1, 16x1, etc. This controls Pixel Shading. If you have a 4x2 setup, you have 4 pipelines and 2 texturing units. This means you can draw 4 pixels per clock, and perform 2 texture accesses per clock.
The 5900 cards show at Toms as 8x1. But really they are either 4x2 or 4x1. They are unable to single texture at the higher 8 "pipelines" like the 9800 and 9700 cards can. So when it needs to single texture, it drops to 4x1 mode which is half what the ATI cards can do. When the app calls for multitexturing, the 5900 will run just as well as the 9800 (the 9800 runs at 8x1 or 4x2, depending on need). Dont ask me why it is this way, I wish it weren't.
That said, I use a 5900 and I get excellent frame rates most of the time. I bought a card that was labelled as a 5900SE (low end for this card) which turned out to be an OEM 5900XT (mid range for this card). I then overclocked it very easily to 5900U speeds(top range for this card). Considering it has the wider memory bus too, I'm pretty happy with it.