Thanks Dan.
I'd be willing to bet that save_delete_material
method doesn't actually search all the faces, only those in the top-level definitions. I had thomthom help me a long time ago to write a recursive function to iterate ALL the faces, so I think I'll piece this together from that...