Essentially I have a solution for using PMCs for arrays simply by hiding the XPVAV behind an interface, and have all the macros return pointers into the structure. Now this allows the perl internals only to function with perl5array pmcs and not general pmcs, but for the the time being there is not much to do about it. Most parts of the perl internals assume total access to the internals of an array, this includes pad and stack handling code, the correct solution is for them to use the official API and not hack things directly, the reason they are not doing so is of course 'speed' reasons (or in some cases, because they do really really evil things). So for the time being, you will only be able to use perl5array pmcs in there, further ahead we should be able to, at least for most operations, be able to use any Parrot PMC that works as a container. (The question on how much XS code depends on the internals of arrays/hashes need to be looked at too).
Hopefully, by end of next week, arrays should be working fully again with tie calls going through a PMC switch and using a perl5tie pmc instead.