Why group batch work by card hierarchy instead of by arbitrary chunks?
Because grouping by hierarchy removes duplicated work; chunking arbitrarily only redistributes it.
Arbitrary chunking parallelises the same total work. Grouping by hierarchy makes the total work smaller: parent context is resolved once per group instead of once per record, and records that touch the same rows touch them together, which is friendlier to both the buffer cache and the lock manager.
The trade is skew. Hierarchies are not evenly sized, so the largest group sets the tail latency. That is an acceptable trade when the duplicated-work saving is large — and it is the reason a work-stealing claim model is the natural next step rather than a premature one.