The main reason is that gemination does not take place in complex segments. 'Affricates' are complex segments; they start off as plosives, but finish as fricatives (they have two manners of articulation).
Or because affricates are composed of two different kinds of sounds (plosives + fricatives).
We usually geminate two similar sounds when they're next to each other:
- Bad day -> [bæd̚.deɪ]
- This sin -> [ðɪsːɪn] etc.
The /d/ and /s/ can be geminated because we don't have any complex segments here.
However, when two affricates come next to each other, we get four different kinds of sounds:
In case of 'continuants', the geminate is just a longer version of the continuant.
- His zone -> [hɪz:əʊn]
- Solely -> [səʊlːi]
However, 'stops' don't do the same because they're obstruents. Their gemination often results in an 'unreleased stop' followed by a released one:
- Lamp post -> [læmp̚pʰəʊst] (not [læmppʰəʊst]).
- Bad day -> [bæd̚deɪ]
Affricates can be thought of as 'stops', but with a fricative release, so if the first affricate is unreleased ([t̚] or [d̚]), their geminates are supposed to be pronounced (not how they're pronounced):
that's why they can be confusing.
From Sounds of the Worlds Languages (1st Edition) by Peter Ladefoged:
Geminate affricates are very clearly different from an affricate sequence, since the sequence has two stop and two frication portions, while a geminate affricate has a long stop closure followed by one fricative portion.
But he doesn't explain why they don't occur in English.