As you see, there is a BIG difference between a single User special script and the one for all.
Conclusion: Build in a check Routine : where do we begin.
btw. The scriplet is abt 2 hours of work, which is NOTHING for such a thing.
For reference, I also tried with URL rewrite both on and off, and the original version of the script before I tried getting rid of the 2008 list. Now, as far as getting the data from the tables about how many posts exist and what month they occur in, that is working just fine. But either the page generation or the links themselves seem to not be valid. I went and checked the example on your site, and as far as I could tell the URL structure was correct in my instance.
I did manage to do away with the duplicate 2009 by commenting out a few lines through trial and error. I'll have to wait and see whether what I've done will make a mess for me when March starts, though.
I'm also seriously impressed if you could turn out this script with just two hours work.