It looks like you have registered the observer correctly, but you are not using the model's delete() method in your deleteOldEntries() function. Instead, you are using the query builder's delete() method. The model's delete() method will trigger the observer, while the query builder's delete() method will not.
To fix this, you can use the model's delete() method instead:
private function deleteOldEntries()
{
$ads = Ad::where('created_at', '<', Carbon::now()->subSeconds(10))->get();
foreach ($ads as $ad) {
$ad->delete();
}
}