How to set additional node type options programmatically?
Is there a better way of doing this than the improvised soluton I
  currently use?


I don't think so. Also I don't find it improvised.



Here's a D7 module I once made that creates a new content type: https://github.com/leymannx/drupal-personality-test/blob/master/personality_test.install

/**
 * Implements hook_install().
 */
function MYMODULE_install() {
  node_types_rebuild();
  $types = node_type_get_types();

  // Add a body field
  node_add_body_field($types['MY_CONTENTTYPE']);

  // Add custom fields
  add_custom_fields();

  // Default to not to be promoted
  variable_set('node_options_MY_CONTENTTYPE', array('status'));

  // Disable comments
  variable_set('comment_MY_CONTENTTYPE', COMMENT_NODE_CLOSED);

  // Hide date and author information
  variable_set('node_submitted_MY_CONTENTTYPE', FALSE);

  // Disable node preview
  variable_set('node_preview_MY_CONTENTTYPE', 0);

  // Disable menu entry
  variable_set('menu_options_MY_CONTENTTYPE', array(0));
}


I experienced just the same and solved it exactly like you via hook_install. If I remember it right, I probably found the code in core when looking how the article and page node types get created.



Related: How to set node type options programmatically (where another tiny module gets recommended you'd need to have everything together in hook_node_info).