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
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.