Will forcing validation on a node save result in security issues or data integrity loss?
Looking at Drupal code, I don't see any possible security flaw; there could be any, depending on the code executed from third-party modules.
For sure, I am expecting many errors raised for form fields that are added to the node edit form and whose content is not validated. None of the modules I know (and which alter the node edit form) validate the user input in the validation, and in the submission handlers they add.

Unconditionally removing any error message is not what I would do. I would rather let the users know when the node they are editing has been already changed from another user, which is the error message returned from node_validate().

  if (isset($node-&gt;nid) &amp;&amp; (node_last_changed($node-&gt;nid) &gt; $node-&gt;changed)) {
    form_set_error('changed', t('The content on this page has either been modified by another user, or you have already submitted modifications using this form. As a result, your changes cannot be saved.'));
  }


I would also let the users know there is already a translation for a node in a language, which is the error message given from translation_node_validate().

if (isset($translations[$langcode]) &amp;&amp; $translations[$langcode]-&gt;nid != $node-&gt;nid) {
  form_set_error('language', t('There is already a translation in this language.'));
}


Using drupal_static('form_set_error', NULL, TRUE) (you could simply use drupal_static_reset('form_set_error')), you are resetting all the form errors for any form present in the page. See How do I make form_set_error() affect the submitted form only?

If I were to implement that code, I would write it as follows. I don't think that avoiding the validation errors are seen from the users causes anything good.

function mymodule_form_node_form_alter(&amp;$form, &amp;$form_state) {
  if ($form['#bundle'] == 'content_type') {
    // If node already exists and is not published, show "Draft" markup.
    if (!empty($form['#node']-&gt;nid) &amp;&amp; $form['#node']-&gt;status == 0) {
      $form['draft_markup']['#markup'] = '&lt;div id="node-draft"&gt;Draft&lt;/div&gt;';
    }

    // Add 'Save as Draft' button
    $form['actions']['draft'] = array(
      '#type' =&gt; 'submit',
      '#class' =&gt; 'form-submit',
      '#value' =&gt; t('Save as Draft'),
      '#weight' =&gt; 0,
      '#validate' =&gt; array('mymodule_save_draft_validate'),
      // Change the following line to contain the name of the fields that 
      // needs to be validated. As it is, it avoids any form field is validated,
      // when this button is clicked.
      'limit_validation_errors' =&gt; array(),
      '#submit' =&gt; array('mymodule_save_draft_submit'),
    );

    // Change submit button's text.
    $form['actions']['submit']['#value'] = t('Save &amp; Publish');
  }
}

function mymodule_save_draft_validate($form, &amp;$form_state) {
  $form_state['values']['status'] = 0;
}

function mymodule_save_draft_submit($form, &amp;$form_state) {
  // …
}