DST ranges do not change every year as far as I know, but yes, they do change from time to time. This is why systems have a way of specifying when DST goes in to and out of effect for each timezone and ways to change it.
POSIX 1003.1 section 8 TZ strings are one way of doing this:
Example for Eastern time zone:
This string specifies everything you need to know about the timezone, including when DST starts and ends.
If the date/time that DST starts/ends changes, then you just need to update this string.
Breakdown of M3.2.0 (when DST starts, the M11.1.0 indicates when it ends):
M3 = Third month (March)
2 = Second week of the month
0 = First day of the week (Sunday)
The time of the change defaults to 2am, but you can also specify a different time for the change to occur (you don't need to specify anything if it should use the default)
You can find a summary of the syntax here:http://www.di-mgt.com.au/wclock/tz-syntax.txt
You can see strings for many different time zones here (you can see that Phoenix, AZ is simply MST7, indicating no DST observance):http://wiki.openwrt.org/doc/uci/system#time_zones
So I think ultimately you are correct when you say that phpbb sucks