The local plugin approach is purely opinion based of course. The way I see it, while a block is course based, a local plugin does not need a new instance for each course, and if you use the block only to open a dedicated page then the whole purpose of the block is somewhat diminished.
On the other hand, if you want the plugin to be enabled only on selected courses then using a block is the best way and it makes all my other arguments irrelevant.
As for performance, I have no idea how your report works so I can only talk from experience.
I once wrote a component that produced a (much less pretty) report for a selected course with detailed statistics about the usage of its components along with some other statistical information. Depending on the course and its content, each report could take anywhere between a few seconds and a few minutes.
In the end we abandoned the original plan to open it to all editing teachers and instead restricted it to a small group that produced reports by request.
The bigger the database, the longer the queries will run. Just sifting through all the tables takes its toll. As for "24/7", what I meant is that you have no control over how many students will use it at any given time.
Suppose a report takes around 10 seconds and four students decide to use it at the same time, you get about 20-40 seconds of hard processing time that might slow the whole site.
Now let's say it's the end of a semester and a hundred students want to create a report, all in one day. Even if it all spreads over several hours there's still the possibility of a bottleneck in the SQL server that could slow it down significantly or even freeze it.
I know it sounds very pessimistic, especially when I have no knowledge about your code performance-wise, but this possibility should be considered.