My take: Task level can be used to make you filtering more dynamic, so you can have different tasks with different filters for different audiences.
Report level will be a global filter that applies to all versions of the report.
I'm currently working on a report for an organization with reports per division. One division has to be excluded always. That will be a report filter. On top of that I use task filters for each task where I can define the right audience.
Depends on your use case if you have a report that can be reused in a number of cases when the audience/frequency changes then applying filters and conditions at a publish level can be the way to go as it saves on creating the same/similar report over and over with the subsequent support and maintenance overhead.