Why are modifiers not applied to child objects?
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.