Greg Parker's comment on the accepted answer is the best answer here:
There is one functional difference: ivars in the class's @interface are @protected by default, and ivars in a class extension @interface or in @implementation are @private by default.