The reason for this discrepancy is PECOHAB is the self-reported cohabitation identification variable. It reports the respondent’s answer to the question: “Do you have a boyfriend, girlfriend, or partner in this household?” The SPLOC variable, on the other hand, is an IPUMS defined variable that identifies probabilistic spouses and partners within households. The method used to define SPLOC values is to combine information found in RELATE (relationship to household head), AGE, and MARST (marital status). In particular, the first priority in assigning SPLOC values is links within a household based on the clarity of the relationship between two people using RELATE. (More details about how these probable links are made can be found here.)
So, it looks like cases where PECOHAB>0 and SPLOC==0 ambiguous relationships are defined via RELATE. One way to get around this issue is the “re-code” SPLOC values in cases where PECOHAB>0 and SPLOC==0 to equal the PECOHAB values. This will not, however, allow you to “fix” the assigning of “characteristics” using the Attach Characteristics tool, since this feature uses the existing values of SPLOC.