Just trying to explain.
As you suggested Melonman64, there is a way to take advantage of the similar processor.
If you (the emulator designers and coders) know that the emulator runs on an system that have the same (or similar) processor (I mean, a processor with the same or similar instruction set), the emulation of the processor instructions is easier, since many of them are the same in both processors. Then, emulating some instruction of the emulated CPU needs only one instruction of the host system (because the same instruction is in both instruction sets), being the the fastest it can be emulated.
If the instruction to emulate is not present in the instruction set of the host system, then must be emulated by writing more or less code, being then slower to execute.
As ShizZy said, the designer of the emulator must take that simmilitude into account in order to optimize the code, targeting it to a concrete architecture (like PPC) and making the emulator faster. In the other hand, the emulator will be less portable when you code at lower level, using processor specific assembly code instead of a high level languaje like C, C++ or so.
A good solution should be to write some parts of the core in processor specific assembly languaje and the rest of the emulator (the GUI and so) in a high level languaje that can compile in every machine. There is less code to maintain.
I know my english is horrible. I´m trying to improve it everyday!