Thinking about it, I suppose you can't just battle it while it's sleeping because it didn't pop out at you. Gen 4 suggested that the wild Pokémon you encounter all want to battle; you didn't just stumble across them. Being asleep, Snorlax can't exactly choose to approach you or not, so it's not reasonable to attack it. You're supposed to be a friend to all Pokémon, which is the opposite of jumping a snoozing Snorlax.
As for why Awakening doesn't work, perhaps you just can't use it properly. Maybe it should be sprayed in the face, and the player can't reach it. Also, Awakening's Japanese name is Drowsiness Cure, and there's a difference between drowsiness and being properly asleep (like Snorlax is). Compare the term "fainted" which actually means "unable to battle" (truly unconscious Pokémon wouldn't be able to use HMs and eat Rare Candies). Battle sleep isn't the same as proper sleep, and an Awakening just won't cut it. You need a proper pick-me-up, in the form of a flute.
That's a good point. You know it's there, you've encountered at least one of them so far. You have no idea what it is. When you've finally gotten the flute, and you know the effort you put into getting it, the reward of Snorlax attacking you is all the better.
Isn't Snorlax also the first (and indeed, only non-legendary) encounter where you interact with it in the overworld to start a battle? It also introduces you to the concept of wild Pokémon in the overworld, by virtue of it being a necessary roadblock.