I finally achieved what I wanted doing the following
mymodule/mymodule.module
use Drupal\Core\Form\FormStateInterface;
use Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph;
function mymodule_field_widget_single_element_entity_reference_paragraphs_form_alter(&$element, FormStateInterface $form_state, $context) {
if ($element['#paragraph_type'] == 'block_images') {
\Drupal::service('class_resolver')
->getInstanceFromDefinition(BlockImagesParagraph::class)
->alterFieldWidget($element, $form_state, $context);
}
}
mymodule/src/Alter/FieldWidget
namespace Drupal\mymodule\Alter\FieldWidget;
use Drupal\Core\Form\FormStateInterface;
final class BlockImagesParagraph {
public function alterFieldWidget(array &$element, FormStateInterface $form_state, array $context) {
$widget = &$element['subform']['image']['widget'];
foreach ($widget as $key => &$value) {
if (!is_int($key)) {
continue;
}
$value['#process'][] = [
'Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph',
'processImageWidget',
];
}
}
public static function processImageWidget(array $element, FormStateInterface $form_state, array $form) {
if (isset($element['title'])) {
$element['title']['#title'] = t('Caption');
}
return $element;
}
}