Why there is no before-undelete event in Salesforce triggers?
Because, there will be no record available before Undelete to update. But After Undelete you will be having a record to update something with that record.
There is a record, it has the field isDeleted set to True. Standard security means that these records are not visible, either via the UI or Apex, so an undelete trigger wouldn't be able to see the records that it needs.