Imagine that you have a block space of 1MB, and you are asked to fill it, any transaction you add takes space in that block, but you are lazy and with a few transactions you find that block is full.
Now someone arranged and said I will reorganize the data inside the block so that the same block holds more data, what the person did is segregrate the witness data to a different partition so that it still maintains the same size of 1MB but the non-witness data consumes 4 weight units per Byte .
So every new block contains a (lazy) legacy transaction with Byte = vByte and a (new) with Segwit transactions containing 4 vByte.
The final result is that we have a block of 1MB, but the data inside it is more than it.
Transaction example:
Block 787719 size is 2123.675 KB
In short, avoid using legacy address and calculate fees using sats/vByte because if you are a miner, you will try to fill your block with more data, so you will prefer Segwit transactions.