You have me both intrigued and baffled by the ATECACHE60 reference. It sounds like a great idea, but I can't find any mention of it in the code. The APEX directory has a configurable retention option, but I'm not aware of such an intermediate option in between ATECACHE (cleared when the last ATE session on the client PC exits) and ATEPERMCACHE (never cleared automatically). I wonder if you set up your ATEPERMCACHE environment variable to point to \ATECACHE60 and the implemented your own utility to delete files older than 60 days? Or maybe it was, or should be added to ATSYNC?
On the AG_FTPSYNC and /V2, I think you meant ATSYNC (not ATEAPX). As you say though, ATSYNC can do a lot better job of transferring just the files you need to update. The standard ATSYNC.LIT is of course easiest to use in a command file, but there is also an ATSYNC.SBX that can be used from the program, just prior to your XCALL XTREE to transfer all the thumbnails needed.