There's actually a THREE.MeshFaceMaterial for meshes that have multiple materials. See: https://github.com/mrdoob/three.js/blob/master/examples/webgl_animation_skinning.html#L152

It's probably worth checking to see if there's more than one material, and if there is, make a MeshFaceMaterial from the array.