While I agree that your approach to s/// is the most common, and probably the best, if we wanted there to be only one way to do things then we'd be using Python the principle that TIMTOWTDI can surely be extended to TIMTORTDI (there is more than one reason to do it!). :-)
As an illustration of the use of recursive substitution, consider macro-expansion languages. Recursion means the difference between a language that is Turing complete and one that is not. (Note that the latter article is quoted approvingly—sometimes totality is better than Turing completeness.)