Currently assign_block_vars() is used to assign block template loops which requires to be called within foreach/for/etc loop to assign the whole block, like that:
This makes it hard to change the data assigned to the template loop when it come to extensions, because you either have to create event within the PHP loop to add/change $block_array key=>value pairs, or to use tricks with alter_block_array() construction which is not even possible within event.
The suggestion is to add one more (wrapper) template method which can take the whole 2-dimensional $block_arrays array as a parameter, which (the array) can be passed to event before being assigned to template block loop, like following:
The wrapper function itself would be looking like that:
This can make the core a little bit more expendable from the point of developing extensions.