My idea on this is that it's the base. The CDU base is fairly loyal and if they break, they should first break to the FDP. Although the SPD has been running a fairly centrist campaign. The main base for the FDP and Greens, meanwhile, is rich and/or educated. These people make up their minds sooner.
The main base for the SPD has been less motivated to actually vote, which depressed their numbers in the European Parliament elections, but they should turn up for the federal elections. Additionally, the electoral system with a first vote for a direct candidate and a second vote for a party list should drive more votes towards the SPD, as they bring the only credible candidates to oppose the CDU in a lot of districts.
The CDU base is fairly loyal and if they break, they should first break to the FDP.
Is there not still a strong Catholic/Protestant split between (especially older) CDU/FDP voters which reduces cross-overs despite ideological similarities especially on economic policy? notes from no w here