Is this a reasonable use of hook_user_presave?
If you look at the documentation page for Drupal 8, you will notice that sentence is not used anymore.


  Act on a user account being inserted or updated.
  
  This hook is invoked before the user account is saved to the database.
  
  Modules that want to store properties in the serialized {users}.data column, which is automatically loaded whenever a user account object is loaded, may add their properties to $account->data in order to have their data serialized on save.


The fact the hook has different parameters in Drupal 8 doesn't change its purpose. In fact, with Drupal 8 you could use the following code.

$account-&gt;mail = $account-&gt;original-&gt;mail;


$account-&gt;original contains the value returned from entity_load_unchanged().

Although on Drupal hook_user_presave() is normally used for the purpose you noticed, you could use it for the purpose you described.

The alternative would be to add a form submission handler to the user edit form which is executed before the default form submission handler. The pro of using hook_user_presave() is that it works also when a module programmatically save a user object using user_save().