I humbly disagree....You supplied the code that runs via cron. Regardless of how it runs, if the code says look at this and if this equals this then do this. If nothing is changed in the database it will keep doing it over and over again. Thus is the case of the ended auctions.
It looks, sees it is ended and sends out the notice to the seller. It does not seem to make any change to the database, like setting a status if e-mail was sent or not. As such it does what it programed to do each time in this case sending it again each and every time the cron task runs your code.
This I do think is a issue, a bug, in the coding. Unless I am totally mistaken on how it all runs, which I could be based on the mention of the switch above of -q. But I do admit I do not know your coding inside and out.