If this build of DoomIII is from E3 2002, I'm guessing that the GeforceFX is using the NV20 codepath and the 9700 is using the R200 codepath. I.e. vendor-specific extensions for the previous generation of cards.
The reason I think this is because the OpenGL extensions for ARB_vertex_program and ARB_fragment_program weren't even approved until June 18 and September 18 2002 respectively, and they weren't exposed in the drivers for the cards until some time later.
If I'm right, this would mean that neither card is using the power of it's high-precision internal rendering, and both are doing all the extra passes that the previous cards would have needed to do.
So take these numbers with a heaping helping of salt. They may be totally different from the way the cards would stack up with a newer build of the engine that has specialized code paths for the new cards. If the old cards required n passes to draw the scene but the new cards require only 1, that would mean that a specialized codepath for the new cards would be doing 1/n times the geometry and blending work but n times as much pixel shader work on that one pass (and at a higher precision).
Another factor that could shift performance is the possibility that JC will use some of the extra power of the new cards to add new features or better image quality (which I'm hoping for).