The lower bound is used to guide allocations for collecting. I don’t know why this is, I’d guess to avoid massive overallocations when the upper bound is far too vague.
The higher bound is used in TrustedLen, but then, its the same value as the lower bound in that case.