The split arrays would have to be correctly constructed.  Additionally, we would have to implement MatSetValues by hand, because: http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatCreateMPIAIJWithSplitArrays.html#MatCreateMPIAIJWithSplitArrays
...
"You cannot later use MatSetValues() to change values in this matrix."
...

Which is somewhat irritating.