I ran a load test on both my desktop and Surface Pro. On desktop, the site loads in 4.3 seconds and the Surface loads the site in 5.2 seconds. Personally, I would consider these load times slow but acceptable.
Great website. I have a Master's in Geology. I kept getting distracted by the content, making it hard to investigate the problem. Keep in mind that the rest of this is all speculation by a guy who has taken many college courses in rock and none in computer science.
I think you are running into a major design trade-off built into React. (Experience Builder is based off the React framework.) React loads everything needed to render a site, for all the site's pages, when it is first loaded. This makes can really bog down the initial load times, but it makes switching pages or loading additional elements lightning fast. Additionally, everything in rendered client-side (i.e. the user's computer), making load times highly dependent on the speed of the user's hardware and internet connection.
Using the URL option to upload images should help as the image will be rendered server-side by the separate site in the URL and the image will not have to be transmitted to the user in that initial load.
Your site does not appear to have much interconnectivity between its sections. For example, the Wasatch Fault section does not need to send data to the Southern Utah Faults section. It might be possible to break apart your site into small chunks in separate Experience Builder/StoryMap projects and then use the Embed Widget to stich your site back together again. I think this should off-load portions of the site to multiple servers and Experience Builder would delay trying to load the embedded sections until they are actually needed. I have not tried this personally and it would be a major re-design, but I think it should speed up the initial load at the expense of slower rendering when the embedded section is needed.
GIS Developer
City of Arlington, Texas