Doesn't want to do it manually.
One thought that occurred to me would be for the index.php (if the index page is php-driven) to do it if the site load is busy enough (at lease one or two hits per average).
Whenever someone hits that page it checks the date. If it's the 25th, it checks further whether or not the monthly job's been done. If it hasn't, make a note to itself to say that it has (I'm guessing you've got a database; store it there) then uses register_shutdown_function() to - well, register a shutdown function.
Then when the rest of the script has finished processing and the user is looking at their completed index.php page, the shutdown function runs which carries out the job.
There's an obvious potential race condition between noting that it "hasn't been done yet" and noting that "it shall be done" - if the site's too busy, that will cause problems with multiple executions of the job. Avoiding that could be hairy, and the fact I don't have a solution right now shows how little thought I've paid to this 🙂
It's just a thought - no idea how effective it would be...