Да, тут тот самый случай, когда необходим "хак".
Во-первых, Reference должен быть на объект в связанном файле. Для этого нужно вызвать:
var r = i.CreateLinkReference(revitLinkInstance);
Дальше смотрим результат метода r.ConvertToStableRepresentation(doc). Здесь doc - родительский документ (не linkInstace.GetLinkDocument()) Будет что-то вида:
eb437e5a-95f6-4f2f-8aaa-df56304627ab-00000990:RVTLINK/eb437e5a-95f6-4f2f-8aaa-df56304627ab-0000098f:2557:5:SURFACE
Теперь создадим размер руками и посмотрим RevitLookup-ом, что там у него будет в Reference-ах. Здесь будет что-то вроде:
eb437e5a-95f6-4f2f-8aaa-df56304627ab-00000990:0:RVTLINK:2557:5:SURFACE
Соответственно, меняем исходную строку - выкидываем лишнее. Дальше получаем Reference с помощью Reference.ParseFromStableRepresentation - опять же передаем родительский документ. И уже именно этот Reference добавляем в ReferenceArray.