You are considering read-ony PMC versus others. Another issue is properties. Many PMCs "classes" will support properties that will alter their behavior. But most PMC instances will have no property attached to them. Or just default values of them if you see it that way.
To avoid to go back the slow world of perl5 where many things need to be tested before figuring what to do, performancewise, there is little choice but to have two versions of each PMC class, a fast one that is devoid of property support and another slow one that does support them. Note to the newcomers: A property is information dynamically attached to a PMC. At the Perl6 language level, it is for example a boolean value attached to a Perl integer: '0 but true'. At the PMC level, a property is set by setprop() that by default adds info to a hash, but could well setup flags in the pmc if it is more appropriate for a given property and pmc type. -- stef