OS X uses timezoned dates (NSCalendarDate) for representing birthdays in Address Book. This means that if you create a birthday in one time zone, and then shift to a very different time zone (e.g. NZST/Auckland to US/Pacific), all of your birthdays will shift by a day! I don't know about you, but when I move overseas I don't want my birthday changing dates! Plus it is confusing to have them all moving about -- if I need a time conversion to figure out when to phone them, I'll do it myself as OS X doesn't know what timezone they are living in.
To work around this problem, I hacked together a python script which moves all your birthdays by any number of days in either direction. You'll need pyobjc installed to make this work, since it uses the Cocoa AddressBook framework. I have Pyobjc version 1.3.6 for python 2.3. If you have entered various birthdays in various time zones, you might find only some birthdays move around. This script won't help you with that. Maybe someone wants to write one that normalises birthdays to a unified timezone.
Put the code in a text file called correctBirthdays and make it executable (chmod 755 correctBirthdays). Run it from Terminal and give it the number of days to shift birthdays by as an argument. For example, the following will move all birthdays back by one day:
./correctBirthdays -1
Needless to say, back up your Address Book before you try this!
Mac OS X Hints
http://hints.macworld.com/article.php?story=20070313180838582