The webpack-dev-server is extra tooling to improve your workflow. Because a React app has to be compiled, you cannot simply serve its JSX files straight out of a directory. Webpack needs to compile, concatenate, and optimize your JSX files into bundles, which it usually puts into the dist/ folder. You could configure Express to serve the static files created by Webpack from the dist/ folder without the need for webpack-dev-server.
However webpack-dev-server offers some conveniences over serving files out of dist/. The dev-server keeps built files in memory rather than writing to disk, which is why it runs as its own server. This decreases the amount of time it takes to compile. It will also watch changes to your files and recompile when necessary. It can even trigger your browser to refresh the page to grab the new files (though these last 2 features are not unique to webpack-dev-server).
You can remove the webpack-dev-server from your toolkit but still get the benefits by using webpack-dev-middleware. This way you can have the more conventional single server setup. If you do use the middleware, you should still remove it or disable it for production.