Thanks to @Berdir and @4k4 who helped me out several times - I just followed their ideas, tested and wrote up the answers.

This first hook alters the field settings. I've included a second example for image settings.

```php
/**
 * Implements hook_ENTITY_TYPE_create() for 'field_config'.
 */
function XXX_field_config_create(FieldConfigInterface $field) {
 if ($field->isSyncing()) return;

 switch ($field->getType()) {
 case 'image':
 $field->setSettings(['file_directory' => 'images', 'max_resolution' => '1080x1080']);
 break;

 case 'text_with_summary':
 case 'text_long':
 $field->setThirdPartySetting('allowed_formats', 'basic_html', 'basic_html');
 break;
 }
}
```

This second hook alters the form display settings. The array_diff_key command is used to determine which fields are new.

 /**
 * Implements hook_ENTITY_TYPE_presave().
 *
 * Override field form display defaults used when a field is added to a content type.
 */
 function XXX_entity_form_display_presave(EntityFormDisplay $display) {
 $fields = $display->getComponents();
 $origFields = (isset($display->original)) ? $display->original->getComponents() : [];
 foreach (array_diff_key($fields, $origFields) as $newField => $settings) {
 switch ($settings['type']) {
 case 'text_textarea_with_summary':
 case 'text_textarea':
 $settings['third_party_settings']['allowed_formats'] = ['hide_help' => '1', 'hide_guidelines' => '1'];
 $display->setComponent($newField, $settings);
 break;
 }
 }
 }