Because XMonad is library for writing your own window manager rather than just a pre-built window manager. That means that everything will always work exactly how you want it to because you're the one programming it.
I don't use awesome myself so I don't know about it crashing, but it appears to be a base to build your own system from, in the sense that most of the functionality comes from extensions written in Lua.
Musca, my window manager of choice currently (though I am beginning to try out others too, just in case I'm missing something), is a very small WM with very few features, but a very simple way of extending it through scripting (in any language).
Musca itself is tiny: little under 4K lines of C (including whitespace and comments), the binary is about 190KB. It delegates its "menu" to dmenu. If you want anything else, you use external scripts or programs.
Also, awesome used to crash a lot.