I was initially creating enemies on the fly with CreateObject. You do get a lot of stuttering when you do it this way. I switched to PoolManager - problem solved!
It's easy to implement, especially with the custom playMaker actions. You set up an object in your scene with a PoolManager component, then specify which prefabs you want pre-loaded in the pool. Then you can pretty much spawn your prefabs like you would with CreateObject, only without the performance hit.
The most difficult thing I found is that you need to manually reset your prefab's behaviours before respawning it. Because the prefab is being recycled rather than destroyed and recreated, it will be added back into the scene in the state it was in before despawning.
So if you did something like disabling a collider, you would have to make sure to turn it back on yourself.