Следует отметить вот такой порядок параметров
CIBlockElement::SetPropertyValues( $i_ElementID, $i_IblockID, array('PROPERTY_CODE' => 'PROPERTY_VALUE') );
В этом случае очень важный момент, при обновлении нужно задать все свойства элемента, иначе те которые не заданы будут сброшены.
Это напоминает логику работы CIBlockElement::Update(), если не все свойства указать в PROPERTY_VALUES.