For some reason, despite looking exactly the same, the full name (FN) check for equalness is not matching. My suspicion is that the attribute pulled from active directory has some sort of hidden but special encoding that gets lost in the travel from openfire to spark and back, but it is there if you don't involve that transition. Something hidden like a null or a ctrl-M or something. Need to investigate. Todd (mtstravel) and I have been testing this all day trying to track it down.
Oddly enough, simply removing the FN vcard entry from the vcard mapping fixes the problem, eliminating the possibility of "any whitespace screws it up" (addresses have that too for example). So there's something "else" that's not matching on that field. It's also not yet clear if this is really an Openfire problem, or a Spark problem.
Active Directory based setups?