It's probable that the most obvious of those advantages is that the structure is easily understood. An Artisan instance will have an address property that is another object, and that object has its own relevant properties. At the Artisan level, where there is only one address of any importance, that might not seem significant. Other objects, however, such as Customer and Order, might have more than one associated address (billing and shipping addresses, for example), or even several: Customer might have several shipping addresses that need to be held on to and available.
As a system's object library becomes larger and more complex, using a purely inheritance based design approach will inevitably ...