What you’re describing may be true, you make a good point. Just for the sake of discussion though I’ll continue with an example to the contrary.
Here’s sort of a step-by-step build up of layers, to see how it could play out. I don’t recall seeing your settings, so I’ll just insert numbers based on 0.2mm layer height.
Layer 1) Z is too high in this scenario - it should be 0.2mm, but instead it’s actually set to 0.3mm above the build surface. The filament, which should be the ideal shape of obround, is instead more circular. The layer should be 0.2mm tall, but instead it’s actually 0.3mm tall because of the circular filament cross section. however, there are gaps between the strands.
Layer 2) If the Z tower is moving up correctly, it will only move up 0.2mm. Some of the gap has been filled vertically because of the circular cross section of the lower layer. The new filament will lay on this and be squished now, becoming more obround. However, because of the large gaps in the previous layer, instead of being forced to squish out into an ideal obround, it is allowed to squish down into the gaps of the previous layer. This results in an imperfect fill as there is insufficient fill to completely fill up the volume required.
Layer 3 and on) This process continues where each deposited filament in successive layers more closely approximates the ideal obround extrusion, in which the gaps from previous layers are gradually joining together. There will be some layer where it becomes approximately acceptable as there are no visible gaps. However, if your slicer is configured correctly, where it will not result in over extrusion, it will never fully catch up and will always be underextruded with depressions between the filaments.
If there is a crossover point where your print transitions from underextruded to properly extruded, that necessitates being configured for overextrusion, which will cause problems later.
Said another way, you’re starting off with a filament deficit that leaves gaps. You must deposit extra filament in order to fill in those gaps. The only mechanism by which gaps can be filled automatically will necessarily lead to overextrusion later in the print, as extra filament is still being deposited.
The most correct way of dealing with this is to go through a full series of calibrations step by step to verify that your extruder steps/mm, filament diameter, and extrusion multipliers are correct, your initial Z height is correct, and past that there are a whole set of additional tests to fine tune.
A raft is a bit of a hack, in the sense that the way slicers generate rafts intentionally leaves gaps and also deposits quite a lot of filament. This works to effectively build a new, more level surface, with the first few layers of the raft taking the brunt of the Z height deviation, resulting in successive layers starting at less of a filament deficit. It’s not perfect, or ideal, but in practice they are effective if bed leveling is something that cannot be overcome through better methods.
A raft cross sections looks something like this:
The initial layer is very tall, with gaps. This allows under or overextrusion caused by height changes in the bed to have a place to flow into, or sit on top of. Middle and upper raft layers refine these gaps into a more flat surface. There is then an intentional air gap for the first model layer so that it does not strongly bond to the raft. This is a strong negative if you expect the bottom surface of the model to be as smooth as if it was printed directly on the surface, but in exchange it’s easier to remove and will be flatter than the bed. This air gap, which leaves more circular filament extrusions, is compensated for in the model’s second layer with an intentionally smaller Z height increment.