Actually, in the example, it does seem necessary, as it seems to hit onto a
barely documented area of Moose behaviour . The html method defined in the superclass, calls head defined in the invocant. head isn't augmented in the subclass, so the head method defined in the superclass is used directly. This calls inner which searches up the callstack for an augmented method. While we'd want it to find head, that method is not augmented in the subclass, so it finds html instead, inadvertently using the wrong augmentation.
Try the code from the original question and you'll see.