TinyMCE adds a   after a HR

Turns out I wasn’t far from the answer:

function mce_mod( $init ) {
  $init['apply_source_formatting'] = false;
  return $init;
}
add_filter('tiny_mce_before_init', 'mce_mod', 99);

add this to functions.php and it will stop the nbsp’s.

From the TinyMCE docs

if you want to fully tame tinyMCE I recommend you check out this gist