As much as i like to point out beths failings, i will give them their dues...
It isnt all their fault, well not code wise anyway. They are using Emergents Gamebryo engine, which was always meant to be for pc only. The only reason it ports to xbox so well is the xbox uses standardized c#. The PS3 however uses Sonys own version of C, this was decided because sony wanted some form of exclusivity in that it stops pirate games being made easily.
As such, game developers have a choice, they can either program for the pc/xbox in c# and convert it.. or program both the ps3 and xbox versions independently. Now the results are obvious, for example, battlefield 3 was programmed individually for each platform, Xbox using c#, Pc using c#/C++ and the PS3 Soley using sony's C. Compare that to ported games and youl find they can both do more, use the platform more efficiently and generally run better than the ports.
Beth couldnt program this engine twice, primarily because of the time and scale it uses, but also because there is no PS3 engine out there that would allow the freedom gamebryo uses, gamebryo was originally setup as an engine that could be used for any type of game, and it would do it well. However... its not specialised so it would never run , say... scripted action games as well as Unreal would.
So in reality to make the game better, beth should have used a seperate engine.. but they didnt, so it is what it is, however, the memory leaks and caching issues we are experiencing only occur on the ps3 purely because of the way they have chopped the gamebryo engine apart to make it work on the PS3 code. As a result, it might be that its impossible to completely solve the issue.