The problem was actually the pages having “no language” and WPML seems to hate this.
So I just deleted all those pages and re-inserted them with the proper WPML language attributes:
// (...)
// Create the page
$customPage['id'] = wp_insert_post( $pageParams );
// Check if WPML parameters are needed
if (has_action('wpml_set_element_language_details')) {
// Set WPML parameters
$set_language_args = array(
'element_id' => $customPage['id'],
'element_type' => apply_filters( 'wpml_element_type', 'page' ),
'trid' => FALSE, // new translation id
'language_code' => 'it',
'source_language_code' => NULL
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
This solved my issue.