Gatsby is a Static Site Generator, this means that the HTML is already built when you enter a Gatsby site, avoiding unnecessary requests, parsing, and compiling time for the server as you generally experience in any server-interpreted language (PHP for example). This is achieved by generating an HTML, bundling dependencies, and fetching all the data sources when the compilation occurs (markdown files, CMS, JSON files, etc) via GraphQL, at the build time. Based on those data sources, you can generate dynamic pages based on a slug or any desired field. As you may guess, this has huge SEO benefits and that's why the sites are so fast.
Among all generated HTML, you have the React ecosystem bundled and of course, you can manipulate the DOM and the virtual DOM with React as you wish, and you still have the lifecycle methods or hooks from React if desired. You can also use CSS modules or styled-components for styling, the routing (<Link> component) from @reach/router (from React) is extended by Gatsby so you have all the benefits/features from React plus some additional ones, etc. So, all that can be done with pure React, can be done with Gatsby.
The term "static" when you talk about Gatsby sites stands for this process of fetching data at the build time and generating the respective HTML, no because you cannot play using JS or React making a dynamic site for the user experience, where things happen as long as the user moves through it.
The following schema shows the workflow of Gatsby:

As a curiosity, React's site is built with Gatsby.