I would like to have a master puppet server for each of my physical locations. However, I don't want to have to maintain them separately. Is there a good model/method for this with puppet?
You should put /etc/puppet/config into a source code repository such as Subversion or git. Then on cron, just update /etc/puppet/config with the latest from the repository. You can then check in a change into your code repo and with your next cron run on each puppet master, you'll be updated.
This has the added benefit of having your puppet configuration tracked so you can see who/what/when changes were made.