У нас точно такая же проблема с нашими макетами. Мы не используем Three20, хотя. Существует известная проблема при сборке с iOS 5.0 и запуске на iOS 4.2.1, которая приводит к неправильной инициализации CGRect при использовании оптимизированного кода. (т.е. скомпилирован с самым быстрым и наименьшим уровнем оптимизации), поэтому вы не увидите его при тестировании на отладочной версии, для которой обычно задано значение None.
Существует обходной путь, чтобы это исправить. Вам просто нужно добавить флаг компилятора для:
"OTHER_CFLAGS [arch = armv6]" = "-mno-thumb";
(Вы можете добавить это либо непосредственно в файл проекта, либо на вкладке настроек сборки проекта).
Пожалуйста, смотрите ветку форума Apple, объясняющую полную проблему:
https://devforums.apple.com/thread/122059?tstart=15