Preheat the oven to 400°F (200°C) and place a rack in the center position.
On a rimmed baking sheet, combine the asparagus, olive oil, salt, and pepper. Toss to combine, then spread out the asparagus in a single layer. Bake until tender and starting to brown, about 10 minutes.
In a small bowl, stir together the mayonnaise and butter. Spread the mixture on one side of each slice of bread. Spread about 1 tablespoon of the Romesco on the other side of each of 4 pieces of the bread, then layer on the Gruyère, asparagus, and mozzarella, dividing evenly between the four slices of bread. Finish the sandwiches with the remaining slices of bread, buttered side facing out.
Heat a large cast-iron skillet or griddle over low heat. Add two sandwiches at a time and cook, watching closely, until golden brown on the bottom, about 8 minutes. Flip and toast on the other side. Repeat with the remaining two sandwiches.
Transfer the sandwiches to plates and serve with the remaining Romesco alongside for dipping.