Although the code's order seems to be different each output works 100% the same, so I hadn't really noticed anything until recently
But, I think I tracked it down to the way the OS (Debian) stores the files in a directory
If I go into the same directory on different production machines (where I get diffs) and do ls -U (unsorted list) that's the exact same order in which files get compressed and joined
The trap here seems to be that I had tested this on my dev machines (Debian6-64) and they all gave the same order with ls -U, but on my production servers (Debian5-64) the ls -U order is different for each machine. So it seems like this is not an issue with Uglify, but my build process not accounting for the difference between OS versions.