Drupal module to check "auto renew" checkbox for membership getting overridden, why?
I had an almost identical problem to solve today, which was to default a recurring contribution checkbox to "yes".  I think your original code is close, but QuickForm doesn't expect an array for a default value for a checkbox.  So, for instance, here's the code that worked for me:

function alwayscheckrecurring_civicrm_buildForm($formName, &amp;$form) {
  if ($formName == 'CRM_Contribute_Form_Contribution_Main') {
    // "recurring" should always be set to "yes" if it exists.
    $defaults['is_recur'] = 1;
    $form-&gt;setDefaults( $defaults );
  }
}