How do I populate report page using a controller?
A controller needs to return a render array for the page content. It is explained in Routing API and page controllers / Route controllers for simple routes.

The only requirement is that the method specified in your *.routing.yml file returns:

A render array (see the Theme and render topic for more information). This render array is then rendered in the requested format (HTML, dialog, modal, AJAX are supported by default). In the case of HTML, it will be surrounded by blocks by default: the Block module is enabled by default, and hence its Page Display Variant that surrounds the main content with blocks is also used by default.
A \Symfony\Component\HttpFoundation\Response object.


It's exactly what DbLogController::overview(), the controller method for the Recent log messages (/admin/reports/dblog) route, does.
  $build['dblog_table'] = [
    '#type' =&gt; 'table',
    '#header' =&gt; $header,
    '#rows' =&gt; $rows,
    '#attributes' =&gt; [
      'id' =&gt; 'admin-dblog',
      'class' =&gt; [
        'admin-dblog',
      ],
    ],
    '#empty' =&gt; $this-&gt;t('No log messages available.'),
    '#attached' =&gt; [
      'library' =&gt; [
        'dblog/drupal.dblog',
      ],
    ],
  ];
  $build['dblog_pager'] = [
    '#type' =&gt; 'pager',
  ];
  return $build;

(The Database Logging module also adds a pager, which is helpful when the rows to show could be too much, or they would make the rest of the page rendered too low in the page.)
What is wrong in your code is that it uses an array containing a string as array index, instead of a string. Any PHP version that supports the short array syntax would throw Fatal error: Illegal offset type. (The other versions would throw Parse error: syntax error, unexpected '[' since they don't support the short array syntax.)
The return instruction should be the following one.
    return [
      'table' =&gt; [
        '#type' =&gt; 'table',
        '#header' =&gt; $headers,
        '#rows' =&gt; $rows,
        '#empty' =&gt; t('No entries available'),
      ],
      'message' =&gt; [
        '#markup' =&gt; t('Below is a list of all Event RSVPs including username, email address and the name of the event they will be attending.'),
      ]
    ];