As @taka says,
Using throw new ApplicationError('Error Message Here'); or for that matter any errors that are exposed by @strapi/utils/libs/errors do work as long as they are not used in the beforeDelete hook.
The beforeDelete hook just shows a default message of “Warning An error occurred during record deletion.”.
Is there anyway to override that?