Да, CIBlockElement::SetPropertyValuesEx всегда возвращает NULL. Но зачем вы вообще возвращаете true или false? Если возвращается false, то и выдается ошибка. При этом отсутствует $APPLICATION->ThrowException(), поэтому текст ошибки Unknown. Подробнее [URL=https://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockelementupdate.php]здесь[/URL].