How can I make every new Group a type Mailing List?
Use hook_civicrm_pre to modify the group-to-be prior to saving in the database.  Experiment a little with your hook function, adding the debug lines:

if ($op == 'create' &amp;&amp; $objectName == 'Group') {
  print_r($params);
  die();
}


Try creating a group with the Mailing List checked and then creating a group with it not checked to see what it passes.  Write your code so that the $params array on a group where Mailing List is not checked ends up looking like the case where it is checked.  And obviously delete your debug!