If multiple primitives in a single mesh in an imported collada file overlapped, blender would merge those primitives into one upon import. But this invalidated some pointers to the mesh's polygons from the mappings of materials to primitives. By delaying a call to BKE_mesh_validate until after the materials have been assigned to the polygons, those pointers stay valid.
Attached is a zip file containing a collada model file and texture images that get assigned incorrectly upon import.