I do think that I have a clue about the problem , as I "suffer" from the same symptom.
In my case it seems like i get one notification for each time Content-Scheduler runs the expiration check.
As i have set up
"Expiration frequency = 60" and
"Notify before expiration = 7"
do I recive one notification per hour from the expiration day -7 days
I might have missunderstod "Expiration frequency" but I believe that the purpose of this is to make a check in the database if there is any posts/pages that are to expire at or before the time when the check is run. If so is the selected options applied to that post.
And those checks are run at the intervall defined by the "Expiration frequency".
Unfortunattely does it seems like the notification function is run at the same intervall - so for example if you should set up a 10 minute schedule so would you recieve a mail each 10 minutes.
The notification option is one of the biggest reasons why I decided on Content-Scheduler as I do have many pages on my site that are valid for a year at a time, and after that need a review as it for example contain a price list valid for the current year and then need to be updated.
Would be a very nice feature to either get an option to limit the notification to one notification per day or one notification per post that are to expire.
Thanks for a very good plugin !