I think you misunderstand what is "cascade on delete". It is not Laravel logic "when a model is deleted, delete related models too" or "...fire deleting events on related models".
It works only on database level: if a row is deleted and has foreign keys to other rows in other tables, then these connected rows will be deleted too.
Laravel doesn't know when a row in a table is deleted due to cascade on delete happened. That's why when you delete a Page model no events are raised on Resource model even if a row in resources table is actually deleted.
How about you have a scheduled task which regularly deletes orphaned files that don't belong to any existing resources? It will let you keep models logic cleaner.
update: static method name shoud be booted(), not boot