День добрый.
Поковырялся, всё дело действительно в форме арматурного стержня, а конкретнее, Rebar.GetShapeId() -> RebarShape.ShapeFamilyId.
Более того, один и тот же код работает по разному в 2 проектах в зависимости наличия или отсутствия в проекте семейств формы арматурного стержня. Если семейство есть в проекте, то всё работает без проблем, форму арматурного стержня подбирает первую, которую нашёл по заданным кривым.
Ещё немного немало гугла, резюмирую:
Если в проекте используем RebarShape.Create явно или неявно (RebarBarType.CreateDefaultRebarBarType, RebarBarType.Create при отсутствии семейства формы арматурного стержня или невозможности подбора из существующих форм), то такой RebarShape создается без ShapeFamilyId. В более ранних версиях Revit при создании арматурного стержня по кнопке "Эскиз арматурного стержня" так же работало и через UI, сейчас переделали и семейство, все-таки, создается.
Чтобы работало корректно, перед созданием арматуры загружаем в проект семейства форм, код можно и не менять.