making correct return array of ControllerBase
The return type of a Controller can be either a Response or a render array.

A render array is an array that you see in your code, and this is generally the best thing to return for a visible page as it provides the theme layer with opportunity to render into a template.

Render array types (#type) are defined in the Render Arrays docs page. See also the API docs for the RenderElement plugin I linked below.


  The element type. If this array is an element, this will cause the
  default element properties to be loaded, so in many ways this is
  shorthand for a set of predefined properties which will have been
  arranged through a RenderElement plugin.


However the render array could also be defined to use a theme/template directly with (#theme), which is defined as


  A single theme function/template which will take full responsibility
  for rendering this array element, including its children. It has
  predetermined knowledge of the structure of the element.


So the render array return for a Controller will depend on how you wish to structure the content that is displayed in the main content area.