***tl;dr:** For **select** attributes this cannot be declared directly in the initial `addAttribute()` call; two calls are required.*

In order to set the default value, `eav_attribute.default`must be set with the primary key value from the `eav_attribute_option` table At a high level the need for two calls is apparent by looking at the flow and function of the `addAttribute()` and `addAttributeOption()` methods:

1. Prepare values
2. Insert/update into the `eav_attribute` table
3. Insert/update set/group
4. **Call `addAttributeOption()` to insert/update option values**

The only hope then would be that `addAttributeOption()` will be able to update the `eav_attribute` record. However, there is no code which does this. The only tables accessed by this method are `eav_attribute_option` and `eav_attribute_option_value`.

It is therefore necessary to call `getAttribute()` after the initial `addAttribute()` call, grab the attribute option ID and then call `updateAttribute()`.