I never found a reference that accurately described the "compacting perm gen" values, but our own investigation proved that the reported values were:
currently used PermGen / currently allocated PermGen
In the example in my question, this meant that 482944K of memory had already been allocated for PermGen and 482943K of it had been used at the point of GC (99%). Our max PermGen size was set to 1048576K (1GB), so the collection process had plenty of reserved resources to re-allocate with.
For those encountering similar issues - we solved our problem in the end. In our case it turned out to be a third-party library that made use of the sun.misc.Unsafe class, which is notoriously "unsafe" when used incorrectly.
In this case, a piece of logic for cloning objects passed a specific ClassLoader to some sun.misc.Unsafe operations to copy objects. On certain machines, the copied objects were regularly being created in a corrupted state. When the JVM attempted to garbage collect, it would eventually harvest one of these bad objects and crash. This always caused the error described in my question.