Después de mucha búsqueda, la mejor explicación que encontré es del sitio web de Java Performance Tuning en la pregunta del mes: 1.4.1 Algoritmos de recolección de basura, 29 de enero de 2003
Algoritmos de recolección de basura de generación joven
El recopilador de copias (original) (habilitado de forma predeterminada). Cuando este recopilador se activa, todos los subprocesos de la aplicación se detienen y la colección de copia continúa utilizando un subproceso (lo que significa solo una CPU, incluso si está en una máquina con varias CPU). Esto se conoce como una colección de parar el mundo, porque básicamente la JVM pausa todo lo demás hasta que se completa la colección.
El recopilador de copia en paralelo (habilitado mediante -XX: + UseParNewGC). Al igual que el coleccionista de copias originales, este es un coleccionista de stop-the-world. Sin embargo, este recopilador paraleliza la colección de copias en varios subprocesos, que es más eficiente que el recopilador de copias de un solo subproceso original para máquinas con varias CPU (aunque no para máquinas con una sola CPU). Este algoritmo acelera potencialmente la recopilación de generaciones jóvenes en un factor igual al número de CPU disponibles, en comparación con el colector de copias original de un solo subproceso.
El recopilador de barrido paralelo (habilitado mediante -XX: UseParallelGC). Es como el recopilador de copias en paralelo anterior, pero el algoritmo está ajustado para montones de gigabytes (más de 10 GB) en máquinas con varias CPU. Este algoritmo de recopilación está diseñado para maximizar el rendimiento y minimizar las pausas. Tiene una política de ajuste adaptable opcional que cambiará automáticamente el tamaño de los espacios de almacenamiento dinámico. Si utiliza este colector, solo puede utilizar el colector de marca y barrido original de la generación anterior (es decir, el colector concurrente de generación anterior más nuevo no puede funcionar con este colector de generación joven).
A partir de esta información, parece que la principal diferencia (aparte de la cooperación CMS) es que UseParallelGC admite la ergonomía, mientras que UseParNewGC no.