Ok so it compares to a PC with shared graphics memory, which is really not optimal and means the components weren't used to their full potential.
As for the PS3, from what I understand, a few things make it more difficult:
- The "general purpose" part of cell is less efficient than the general purpose units of Xenos. If you take generic 360 code and run it on PS", performance will be less. To use the power of cell, you have to distribute the execution of your code in threads on SPUs. But SPUs are not general purpose units, they're very optimised for vectorised floating point calculations. They're not very good at branching and they don't have direct access to the memory so it means you've got to feed their cache memory all the time to keep them busy. If you add to this the 2 separated memory banks, you spend a lot of time moving memory arround on the PS3. This takes some specific and I guess complex code.
- The GPU doesn't seem quite as powerful as the one in the 360 (which is a fully custom design, very good at shading, and with 10Mo of integrated high badwith memory that helps). So PS3 developpers might have to take some of the geometry stuff done on the GPU on the 360 and have it execute on one of the Cell's SPUs which are very good at it.
- Memory is reserved by the OS in both XDR and GDR (graphic) memory making the total available memory on the PS3 smaller than on the 360.
Once again this doesn't mean the PS3 is less powerful overall, but that it's so different architecturaly from the 360 that porting is probably difficult.
All this is based from my understanding of what I've read on sites like Beyond3D (which have debated this over and over) so I might have got some stuff wrong though...