Programmatically change select field options in contact form
This is probably not a good use case for the core version of contact form based on entity forms. You have not only to take care of the validation in the form api, but also on the entity level. If you want to do this, here is a tutorial: https://chromatichq.com/blog/dynamic-default-and-allowed-values-list-fields-drupal-8

In contrast Webform provides a very flexible handling of select options. You can edit the options separately from the form in predefined options lists and then you can modify the predefined options dynamically, see these examples:

/**
 * Implements hook_webform_options_WEBFORM_OPTIONS_ID_alter().
 */

function mymodule_webform_options_test_alter(array &amp;$options, array &amp;$element) {
  $options += [
    'four' =&gt; t('Four'),
    'five' =&gt; t('Five'),
    'six' =&gt; t('Six'),
  ];
}

/**
 * Implements hook_webform_options_alter().
 */
function mymodule_webform_options_alter(array &amp;$options, array &amp;$element, $id) {
  if ($id == 'custom') {
    $options = [
      'one' =&gt; t('One'),
      'two' =&gt; t('Two'),
      'three' =&gt; t('Three'),
    ];
  }
}