How can I output a Drush report in table format?
You are better off sticking with your initial implementation; if you use Drush output formatters, then the end-user will be able to convert your data to csv or yaml or other formats as needed. If it takes a long time to collect your data, then use drush_log or perhaps a progress bar to let the user know something is going on.