I consider myself an algorithm/data-structure rookie. But from the places where I have used recursion over iteration I can say that its purpose is always to reduce code length. The sole purpose for me to use a recursive function is to make program efficient and code cleaner. It has its dis-advantages, I agree.
Now coming to iteration vs recursion, it would have been great if it were up to us to elect one. Becuase if you see, javascript engines are optimised to run iteration efficiently over recursion. So its faster to use a for loop than recursion. This is not the case with other programming languages. But as I use javascript heavily, it is a matter of concern for me.
In languages like C and C++, the program's efficency is directly proportional to the code complexity. So you may write easy to read code and there will always be room to improve it through methods like recursion.