The sprintf documentation contains details of the formats;
these are not shown in the printf documentation.
So, as it was the sprintf formatting that I was explaining, it seemed appropriate to use sprintf in my example code.

More importantly though, I made a conscious decision to not use printf in my examples. That function has a number of gotchas which aren't specifically related to the actual formatting and which I didn't want to have to explain.

The printf documentation is short: just three paragraphs.
The first gotcha, noted in the very first sentence, has tripped you up!

Here's what happens if I substitute my 'print sprintf' with your ("Why not simply") 'printf':

I find it makes the code easier to read and, when necessary, easier to debug.
There's a clear delineation between the first argument, which affects how the function operates, and the remaining arguments, which specify what the function operates on.

Well, thank you for your answer, Ken, I guess it is probably a matter of personal taste. Perhaps a reminiscence of my C background. However, as far as the gotchas are concerned, if you look at the one-liner in this post I made two days ago Re^2: How to calculate the sum of columns to be equal to 100?, you'll see that I did not fall in any of the two traps you're mentioning: I am using print, not printf, when I don't need specific formatting (it is actually extremely rare that I use printf), and I am adding a new line in the formatting when needed, nothing particularly complicated. As for the use of the fat comma (=>), I found it slightly distracting, I actually had to think a couple of seconds to understand its meaning in this context. But, again, maybe a prejudice due to C reminiscences on my part.