user_presave and user status
You get NULL for $edit['status'] because the status hasn't been changed. The functions that calls user_save(), which invokes hook_user_presave() contain the following code.
// user_profile_form_submit()

$account_unchanged = clone $account;
entity_form_submit_build_entity('user', $account, $form, $form_state);

// Populate $edit with the properties of $account, which have been edited on
// this form by taking over all values, which appear in the form values too.
$edit = array_intersect_key((array) $account, $form_state['values']);
user_save($account_unchanged, $edit, $category);

// user_register_submit()

$account = $form['#user'];
entity_form_submit_build_entity('user', $account, $form, $form_state);

// Populate $edit with the properties of $account, which have been edited on
// this form by taking over all values, which appear in the form values too.
$edit = array_intersect_key((array) $account, $form_state['values']);
$account = user_save($account, $edit);

As the comment says, $edit contains only the account properties that have been changed, not every property. If you want to obtain the status value, you should use the following code.
$new_status = isset($edit['status']) ? $edit['status'] : $account-&gt;status;