I recommend a zip, Mac OS X has built in support and many users don't understand the concept of disk images.
I'm working on this in my app. Currently I have it setup to check a xml file on my server for the newest version, if a newer one is available then it downloads it to a temp folder (~/Library/Application Support/My App). It then launches my Updater app and quits. My updater app waits until my app has finished quitting then replaces it with the new version. It then asks the user if they wish to launch the new version.