managed_file upload clearing $form_state
I recently encountered the same problem. I found that data is erased in function - drupal_validate_form(). I have not fully understood why this is happening, therefore, just went bypassed the problem. I have rewritten my code so that the code section that erased the data in drupal_validate_form() is not executed.

My code:

  $managed_file_processing_fn = array_merge(
    element_info_property('managed_file', '#process', array()),
    array('ccw_managed_file_process')
  );

  $form['customization']['main']['request_design']['upload_design'] = array(
    '#type' =&gt; 'managed_file',
    '#progress_indicator' =&gt; 'bar',
    '#upload_location' =&gt; 'public://',
    '#upload_validators' =&gt; array(
      'file_validate_extensions' =&gt; array('jpg jpeg gif png zip rar tar'),
    ),
    '#states' =&gt; array(
      'visible' =&gt; array(
        ':input[name="type_of_upload"]' =&gt; array(
          array('value' =&gt; strval(CCW_GET_HELP)),
        ),
      ),
    ),
    '#process' =&gt; $managed_file_processing_fn,
    '#default_value' =&gt; $upload_design,
  );

/**
 * Process managed_file.
 */
function ccw_managed_file_process($element, &amp;$form_state, $form) {
  // When AJAX is execute we ignore form validation.
  $element['upload_button']['#limit_validation_errors'] = FALSE;
  $element['remove_button']['#limit_validation_errors'] = FALSE;

  return $element;
}


Topic with the same problem on drupal.org:
https://www.drupal.org/node/2311199

Also, I noticed that in Drupal 8 the behavior is the same.