Why are modifiers not applied to child objects? If an object has one or more children or other descendants, you would expect that when you apply a modifier to that object, it would apply to the descendants as well. At least for the Array and Mirror modifiers, this would be extremely useful.

However, this does not happen. Empty objects are recommended for grouping objects together, but they cannot even have modifiers -- there would be no point, unless they could be applied to the children, but this doesn't work even for normal parent objects.

I tried to report this deficiency as a bug, but it was immediately closed as "Invalid", by somebody who apparently didn't bother to read it.

https://developer.blender.org/T44150

That bug report has some examples attached, of a situation where this ability is in fact rather necessary -- empty parents are being used to apply coordinate transforms, rather than grouping objects, but this then prevents the Array modifier from being used in the necessary way.

Is there any rational reason why at least the Array and Mirror modifiers cannot be applied to child objects, at least as an option?

Other people are asking the same question:

Applying array modifier to multiple items

It's been suggested that my question is a duplicate of the one above. They are certainly related to the same issue (which is why I included the reference in the first place). However, the question that person actually asks is "What am I thinking wrong?" -- as if he's misunderstood the situation. I don't think I have misunderstood the situation, and the question I'm asking is why at least the Array and Mirror modifiers don't work in the way a lot of people would expect.
This is just not how modifiers are intended to work.
Perhaps it's just me, but I never thought of modifiers being applied to child objects. Indeed, this would seem rather strange to me.
But why?
Modifiers are another kind of datablock which can be added to objects, much like materials or constraints.
Yet neither materials or constraints are applied to child objects, as this would be quite limiting. Imagine if child objects always had the same materials and constraints as the parent!
If this was how it worked, parenting objects would be pretty much equivalent to joining them with ⎈ CtrlJ.
I think the same reasoning holds true for modifiers.
And for the record, I'm not convinced that your assertion that &quot;modifiers don't work in the way a lot of people would expect&quot; is correct. At least in the question you linked, I don't see anything that suggests to me that the OP was expecting modifiers to affect child objects..

To answer your question about arraying an empty, I think parenting is not the tool you are looking for. Group instances sound more like the kind of &quot;compound object&quot; you want, however it isn't possible to add modifiers to them. This is because modifiers operate on mesh data and not objects, and empties don't have any mesh data (group instances are empties with dupligroup enabled).
Instead you could use a particle system or dupli objects to place objects along an arrayed face, e.g. like this.
Or of course you could copy the modifiers to all the child objects.