It is possible that a mutation might corrupt some state in the JVM (e.g set a static variable to an impossible value). This could result in incorrect results for other mutations (most likely making it appear that a mutation is killed that would otherwise survive).
The only way to 100% guarantee that this doesn't happen would be to launch a new JVM/minion for each mutant. This would make mutation testing unworkably slow so, as a compramise, PIT launches a new minion for each class analysed.
This means PIT can guarantee that mutations in different classes will not interfere with each other, but can't guarantee that mutations within the same class won't. It also means that you will see minions exiting without an error.
If you do need a 100% guarantee of no interference between mutants you can get it by setting mutationUnitSize to 1, but this will make things horrifically slow.
The isolation vs performance tradeoff is a really interesting area - Markus Schirp has a neat solution he uses in the Ruby tool Mutant that I hope to replicate in pitest if I ever get time. Unfortunately it requires a few architectural issues to be fixed first.
Henry