It's not always slower. Well-written p-code can easily outperform not-so-well written native code. In fact unless you're doing lots of processor-intensive stuff then the size advantage outweighs the performance loss. Also if you're calling the windows API a lot then most of your program's code is executing in there, so again the performance loss makes no difference.
As a VB programmer I know about this, since native code compilation didn't appear in VB until version 5. With VB p-code is nice as it compiles *very* fast, and produces *very* (typically 50% of the native version) small executables. Usually if you want real speed you'll be using C++ anyway, so it's nice to be able to compile the programs quickly. I'm using p-code for a scripting utility I'm putting together, as it's not speed-orientated and the reduce in size is nice as it means that it will take less time to download.