Below is a simple solution, not yet taking into account that you might want to have different inner sections for the ‘arches’. The loft component is set to rebuild the offset curves which results in a nice polysurface.
What Ftzuk did would work but what if straight-line - curved up - straight line - curved down - straight line again, something like that more than the wave. Just like more controllable. Sorry if I am asking too much lol.
You can achieve this by creating a linear representation of your tunnel and drawing a curve which defines the height. The distance between the linear axis and the height curve can either be remapped to whatever domain or it can be divided by the height of your master section.