I looked at the OGL ES plugin a bit and it isn't surprising that its performance is very poor. It's basically doing a draw call for every triangle or quad, which will result in tens of thousands per second for a typical game. That's never going to perform well. Note that this is largely because it is based on old code meant for OGL 1.x, with triangles drawn using "immediate mode".. the way graphics are done has changed a lot since then.
Getting fast and reasonably correct (forget perfection) emulation with hardware acceleration/enhancement is challenging mainly due to two things: supporting PS1's texture formats and supporting reading back previously rendered-to VRAM as a texture for a later primitive. The texture format problem is usually solved by converting all PS1 textures to some standard format like 15bpp RGB. This requires a lot of careful tracking because the same texture data in VRAM can result in different textures if different palettes are used. So you have to match palettes with texture regions (which are defined by triangles) and cache every new combination that's used. Uploading new textures is expensive and this can end up using a lot more memory than the PS1's textures did.
The other problem is harder. You have to be able to merge the emulated display - which is a different format from the emulated VRAM, or at least that's the main point of using hardware, to enhance the original - with the original display. Reading back the screen output is very expensive. And since this happens a triangle at a time it can be expensive to determine exactly which parts to update. Usually games will render an entire large rectangular region (in the backbuffer in VRAM), but not always. Sometimes they will render "off the screen." Emulators like peops OGL1 handled this through a complex set of checks, heuristics, and hacks, and invoked software rendering over trying to get back the rendered display. But these old emulation techniques didn't have access to a lot of more advanced features like render to texture.
There may be other solutions possible with more complex caching strategies or utilizing fragment shading more to emulate things. But Pandora doesn't have a lot of fragment shading capability so who knows how much you can get on them..