Preheat the oven to 400°F.
Slice about ½ inch off the top of each pretzel bun to create a flat surface, then cut a circle into each bun, leaving about a ½-inch border around the edge. Pull out the center and remove some of the bread from inside, keeping about ½ inch around the sides and bottom so the bun stays sturdy. Melt 2 tablespoons of butter and brush the insides of the buns, then bake for 10-15 minutes, until lightly toasted.
Meanwhile, melt the remaining 2 tablespoons of butter and the olive oil in a large pot over medium heat. Add the onion and cook until softened, about 5 minutes. Add the garlic and cook for another minute.
Sprinkle in the flour and stir to combine. Cook for 2-3 minutes, stirring frequently, until lightly golden.
Pour in the beer and stir, scraping up any browned bits from the bottom of the pot. Let the beer reduce by half, then slowly pour in the chicken stock while stirring/whisking to incorporate, then bring to a gentle simmer.
Add the broccoli and simmer over medium-low heat for about 15 minutes, until tender. Mash some of the broccoli directly in the pot, or blend about half of the soup and stir it back in. If your broccoli is chopped very finely, you may not need to blend/mash much at all.
Remove the pot from the heat and stir in the heavy cream. Add the cheddar and Gruyère a handful at a time, stirring after each addition until melted, then stir in the Dijon mustard.
Ladle the soup into the toasted pretzel buns and top with a little extra cheddar and freshly cracked black pepper!