Everyone is fascinated by that aproach and saying that binding open gl is the way to go for java games. Then they make some benchmarks showing some balls bouncing arround and pulling out great frame rates.
But this is just an illusion, Java3D does a lot more things than visualizing geometry. It does scene graph traversal and optimization, behavior and lod everything itegrated in the model. A game is much more than some balls bouncing on the screen, and thats why java bindings will never replace java 3d.
Read my avatar message: Java3D rules.
Of course that many people report performance problems but Java3D is a high level graphics API. Most of the problems come from bad use of memory not leaving time for the gc to work, not calling the gc immedeatly after setup, not stoping the renderer during setup, excess use of memory allocation during rendering times (which should be used only during setup phases), dangling sub-graph trees, you name it. In java3d there are one million ways to screw up your code if you don't read the specification right.
With all this said of course that java3d cannot compete with a C++ engine, neither an open gl binding running any real game. But we can use your imagination and make games that don't render so much polygons and don't use so much heavy textures. With this in mind java3d has anything we need to build great games. Remenber that a game quality is not measured by the number of polygons it is capable of drawing per frame.