Because the properties for the object are predefined PHP no longer has to store the data in a hashtable, but instead can say that $foo is property 0, $bar is property 1, $baz is property 2 and then just store the properties in a three-element C array. This means that PHP only needs one hashtable in the class that does the property-name to offset mapping and uses a memory-efficient C-array in the individual objects. Arrays on the other hand need the hashtable for every array.

https://gist.github.com/nikic/5015323