The folks at Heroku did some more investigation of this issue. When the URL is resolved for the web.xml schema document, Oracle replies with a 302 with a URL that then replies 302 to itself. Any other environment we have tried does not have this problem. It's possible that oracle is doing special handling for Heroku IP addresses. Who knows why, but that seems to be the behavior.
Regardless of that weirdness, updating the schema definition to the servlet 3.0 document works great. All of our starter kits still reference the old servlet standard. Perhaps this is a good time to consider updating all of them to 3.0. I'm unaware of the ramifications this may cause, however.
You can take a look at one of my web.xml files
here.
Joe