Good print statements can become future logging entries for when software ships and debugging statements need to be turned on without source code access.
I think nobody is arguing against logging. However, printf-debugging typically means that you are inserting temporary printf statements to debug a specific issue. In that case, you can just use tracepoints instead (if your debugger supports them).