What I would change:
for monthly:
Add DoNotVacate for each gap. e.g. AddGap(RoundUp(ZoneBegin,VolumeSize * 0.01), DoNotVacate)
Change SortByName to SortByLastChange on "one game" zones e.g.
/* Zone 4: Diablo III. */
FileSelect
DirectoryPath("D:\Games\Diablo III")
FileActions
SortByLastChange(Ascending)
AddGap(RoundUp(ZoneBegin,VolumeSize * 0.01), DoNotVacate)
FileEnd
for weekly and daily
add DoNotVacate for each gap expect the last one
and then use MoveUpToZone() on every zone
e.g.
/* Zone 4: Diablo III. */
FileSelect
DirectoryPath("D:\Games\Diablo III")
FileActions
MoveUpToZone()
Defragment(Fast)
FastFill()
AddGap(RoundUp(ZoneBegin,VolumeSize * 0.01), DoNotVacate)
FileEnd
and last gap and last zone
AddGap(RoundUp(ZoneBegin,VolumeSize * 0.01))
FileEnd
/* Zone 3: all other files. */
FileSelect
all
FileActions
MoveUpToZone()
Defragment(Fast)
FastFill()
FileEnd
You also have the "Steam program files" zone twice. Remove one of them.