Why I am not able to add custom validate Handler function for UserPasswordResetForm on form_alter?
$form['#validate'] will not work as that form 
"This form works by submitting the hash and timestamp to the user.reset"
aka redirects you to the user.reset from 

what you can do is something like temp replace this form with a custom one though. however i don't really see the point 

/**
 * Implements hook_form_alter().
 */
function yourmodule_form_alter(&amp;$form, FormStateInterface $form_state, $form_id) {
  if ($form_id === 'user_pass_reset') {
    $action = $form['#action'];
    // Set the original action.
    $form_state-&gt;set('original_action', $action);
    // temp replace from with custom one. 
    $form = \Drupal::formBuilder()-&gt;buildForm('\Drupal\yourmodule\Form\AlterTheLoginResetFrom', $form_state);
    return $form;
  }
}


then do 

class AlterTheLoginResetFrom extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'alter_the_login_reset_from';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    // Get the stuff you need from ... 
    dump($form_state-&gt;get('original_action'));
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &amp;$form, FormStateInterface $form_state) {
    foreach ($form_state-&gt;getValues() as $key =&gt; $value) {
      // @TODO: Validate fields.
    }
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &amp;$form, FormStateInterface $form_state) {
    // redirect to original as uses get 
  }
}


or alter the user.reset directly 
see Drupal\user\Form\UserPasswordResetForm; line 60 &amp; 71 
and see how core does it (resetPassLogin)
\Drupal\user\Controller\UserController::resetPassLogin

if all else fails perhaps just validate the passwords in js.