The repo tool not only download files of the selected branch of Android but also downloads all git history. So as any change of file in git creates a snapshot of this file, not surprisingly that with the lapse of time the sources grow. When I started to program Android with Gingerbread version the size of all the sources was less then 10 Gb. Now they are huge.
As for repo synchronization, as far as I remember, unless you successfully downloaded the whole project within repo, the repo tool will restart its synchronization. For instance, there is a subproject "frameworks/base", which is quite huge, thus, if the connection was lost during the synchronization of this subproject, you will be required to synchronize it once again. This can be the reason you see the same files loaded. However, I'm not sure in such behavior of repo tool.