Fix distributed gather for tuples of tensors of varying sizes
# What does this PR do?

Currently, the `DistributedTensorGatherer` responsible for gathering all predictions fails if the arrays to gather are a tuple of tensors, one of which has fixed dimensions (apart form the batch dimensions) and another varying sequence lengths. This is the case if the model has `output_hidden = True` in a sequence classification problem, for instance, as highlighted in #11055.

This PR reworks the internal of `DistributedTensorGatherer` so the storage is expanded when needed inside the recursive call instead of doing it recursively for all the tensors inside. It also adds a test that was failing before the PR.

Fixes #11055