Why does #triggering_element pick the wrong element?
The problem is in form_builder() where it fallbacks to the first button if no button can be found. 

A comment from form_builder():

// Therefore, to be as consistent as we
// can be across browsers, if no 'triggering_element' has been identified
// yet, default it to the first button.
if (!$form_state['programmed'] &amp;&amp; !isset($form_state['triggering_element']) &amp;&amp; !empty($form_state['buttons'])) {
  $form_state['triggering_element'] = $form_state['buttons'][0];
}


More info can be found here: https://www.drupal.org/node/2546700#comment-11164091

There is also a patch for this problem that can be found in the link above.