Я думаю, что это может быть то, что происходит:
Когда вы добавляете UIView в UIScrollView, UIScrollView сохранит его. Вы также вызываете autorelease в UIView, поэтому объект теперь сохраняется UIScrollView и NSAutoreleasePool. Когда вы освобождаете viewController, он уменьшает счет удержания на единицу, но объекты не будут освобождены до тех пор, пока вы не доберетесь до утечки для вашего текущего NSAutoreleasePool.
Возможно, попробуйте не делать авто-релиз объектов в цикле. Просто добавьте их в UIScrollView, а затем отпустите вручную. Таким образом, UIScrollView будет единственным владельцем этих объектов.