From the FuelPHP forum thread, Harro answered:
You can not have a column which is at the same time FK and PK. Which you have on your Model_CustomValue.
The reason for that is that when you disconnect a relation, the FK will be set to NULL, which should not happen with a PK.
I then clarified, for those of us who may need specific examples from the original example, I confirmed the following:
So just re-stating why that's not allowed:
Model_CustomValue uses the "purchase_id" as part of its PK as well as the FK to Model_Purchase. And if the two Models were to be unlinked, that would lead to a null portion of the PK for Model_CustomValue -- which obviously isn't allowed.