Just scanning some of the issues here and to be frank it seems like shocking incompetence. I run a web development company and a lot of these issues are basic and claims that the staging environment couldn't accurately replicate the production one are weak.
- You can use cache control headers as well as changing version numbers on script and stylesheet includes to force browsers to reload them
- A staging environment can never be 100% the same as production but it can be 99.5% the same, and a proper pre-production UAT environment should include having the exact same server configuration (down to the operating system, web server, databases, etc) and database schema, ideally it should use a restore of the production database, though this is often not practical due to size.
- Basic cross-browser testing appears to have been skipped.