This seems related specifically to the suffices _type and _value.
Attributes ending in either of these strings are not processed by the
attribute= method. if #write_attribute("something_type", "a value") is
called instead, then the somthing-type= method is again bypassed and the
attribute is set to the literal value provided instead.
I have raised a ticket for this: