What properties does a custom cck_phone form field need to work?
I was unable to find an exact answer to this question, but I was able to find a work around to get the extensions to load.

using form_alter, after the field is partially built in a form function

//set value for office extension
  if(
    isset($form_state['storage']['$profiles']['personal_information']-&gt;field_phone_office[LANGUAGE_NONE])
    &amp;&amp;
    $form_state['storage']['$profiles']['personal_information']-&gt;field_phone_office[LANGUAGE_NONE][0]['extension'] != NULL
  ){
    $field_phone_office_ext_value = $form_state['storage']['$profiles']['personal_information']-&gt;field_phone_office[LANGUAGE_NONE][0]['extension'];
  }
  else{
    $field_phone_office_ext_value = '';
  }

  $form['user-information']['user-information-fieldset']['profile']['phone']['field_phone_office']['extension'] = array(
    '#type' =&gt; 'textfield',
    '#title' =&gt; t('Ext.'),
    '#default_value' =&gt; $field_phone_office_ext_value,
    '#value' =&gt; $field_phone_office_ext_value,
    '#size' =&gt; 10,
    '#maxlength' =&gt; 10,
    '#weight' =&gt; 2,
    '#attributes' =&gt; array(
      'class' =&gt; array(
        'phone-extension'
      )
    )
  );