addIndexes(IndexReader...) is useful to force a single merge that transforms data: you wrap the readers with some logic that alters them.
But for any use case doing this, they need to work on leaves (LeafReader) to actually do anything.
Otherwise, for simply merging indexes, allowing addIndexes(IndexReader) is unnecessary and maybe a slight trap, its way faster to call addIndexes(Directory), and it won't force a single slow merge, but will just copy in the relevant files and call maybeMerge().
Part of the confusion is the two methods have such different behavior that i don't think they should be both be named addIndexes. But lets do that separately, first i want to fix the parameters.
Long term taking LeafReader here is a simple step towards a more performant api for "merging with filterreader", since its horribly inefficient today.