As a result of SOLID/Complete, fragments are first combined and then a second run is started which closes any gaps. The easiest and fastest way is of course to combine the fragments and possibly even reduce their number. Access will then be faster and the number of memory cells used will be reduced. If there are now many gaps between data, these will be filled with new data in the future, which then must be fragmented because there isn’t not enough space available for the entire file.
The goal is to remove current and avoid any future fragmentation to make sure that the lowest number of memory cells is used and subsequent defragmentation can be easier on the system than the first one.