Вторая версия пропускает экземпляр SomeObject, поскольку self.theObject вызовет установщик, который при правильном написании сохраняет объект.
Вы могли бы просто сделать
theObject = [[SomeObject alloc] init];
и некоторые люди, конечно, делают. Другие предпочитают всегда использовать средства доступа, хотя бы для согласованности или во избежание ошибок, если средства доступа имеют побочные эффекты (например, вы бы обходили уведомление KVO, что может быть проблемой, если оно не является частью метода init).