My point is not so much if delay() is evil or not, but rather that 'blocking functions' can be evil if you don't understand the concept clearly and impact they can have on ones overall sketch.
Sure. I think that the concept of changing from using blocking-is-okay to a blocking-is-a-rarely-needed-fact-of-life is easiest to demonstrate with delay() being replaced be a more intelligent approach.
Certainly the awareness of, and understanding the differences between, blocking and non-blocking functions and approaches should be taught very early. Personally, I think that should begin as soon as the first LED blinks.