Is there any reason not to set up the install so that major upgrade is always done and productcode changed?
I find that supporting different kinds of installs needs more code, and ‘repair’ install seems to work easier with major upgrade. Also the application that needs to be installed is not very big, thus there is no need for ‘service packs’ or patch installers.
No. If you application is small and you don’t feel the pain of uninstall and install then Major Upgrades are the easiest thing to do.
I’d only move to the more advanced update mechanisms if the Major Upgrade user experience was unacceptable.