This appears to be an ANT "copy" task problem rather than a Gant/Grails problem. From the ANT docs:
"By default, files are only copied if the source file is newer than the destination file, or when the destination file does not exist. However, you can explicitly overwrite files with the overwrite attribute."
This implies that you cannot actually force it to NEVER overwrite if there is another file. One workaround may be to "touch" all the files in the project at the point of upgrade, but this might affect version control negatively?
Here is an example of the converted Upgrade.groovy however note that from my reading of the docs <present> is only valid as a child of <fileset> and as such I have commented out the copy commands that use toFile as these are not going to work, and also the workaround for these seems unclear currently.