SmartFTP attempts to re-upload the file from the beginning - as it takes quite some time to upload 5GB I haven't caught it in the act, but I assume it's getting to the end, is unable to verify the file, and restarts. I have checked on it and found for example that while I last saw it at 60%, several hours later it was at 20%. I've stopped it now so the file that resides on S3 is not complete. This is not normal behaviour - in my use of SmartFTP it's common for FTP connections to time out but the transfer continues in the background successfully.
I will try breaking the files into smaller pieces and see how that works.