The "antialising gap" is not really caused by anti-aliasing itself.
When the object is anti-aliased, the edges of the filled area get a linear transition from fully opaque to transparent in the subpixels (considering the opacity of the object is at 100%).
These subpixels above eachother don't add up to an opaque fill.
For example, in between, at the middle the two antialiased edges next to eachother are producing subpixels with 50% opacity both, and one of them above the other in the z-ordering.
It is how the objects are composited. Two objects with 50% transparency above eachother won't add up to an opaque area.
The duplicating method results in more of the same coloured subpixels above eachother with more of the opacity
-so in the end it won't produce a perfect result, some of the background will always show through theoretically.
Switching off anti-aliasing produces fully opaque sub-pixels, therefore it is a workaround.
It can also be achieved by adding the pixellize filter, if you don't want switching it off globally in the document.
Or by having a copy of the object with the pixellize filter below the originals for smoother edges? Theoretically.
But the best results are always the overlapped ones because they are not relying that much on the renderer.
Here is a collection of cliparts drawn with special care on the overlapping.
This example shows how the renderer can be "brute-forced" to produce the right look on anti-aliased objects.
It is using the arithmetic compositing mode where you can set the parametres, and the sub-pixels alpha's are adding up to full opacity.
Very tedious pulling in all the objects with the image filter primitive and compositing them manually but it shows both the nature of the problem and that it
could be solved automatically.
Either by a script that would do the same thing with every separate objects in a drawing or by a new rendering mode.