Preheat oven to 375˚F.
In a mixing bowl toss oil, cauliflower florets, pearl onions, and salt and pepper together until cauliflower and onions are evenly coated. Lightly season with salt and pepper.
Spread mixture onto a baking sheet in a single layer.
Roast cauliflower and onions for 25 to 30 minutes or until lightly caramelized and softened, but florets still have a bite to them. Remove from oven, set aside and cool.
Melt butter in a saucepan over medium-low heat.
Once butter has melted whisk flour into butter until fully incorporated. Cook for about 1 minute.
Whisk milk into roux until mixture is smooth. Simmer, whisking occasionally, until mixture thickens.
Add mustard and season with salt and pepper. Stir together until mixture is smooth.
Remove saucepan from heat and stir in small handfuls of shredded gruyere, waiting until each handful has fully melted before adding more. Continue until all gruyere has been added.
Add half of shredded cheddar and half sliced green onion until fully incorporated and sauce is smooth.
Pour cauliflower and onions into cheese sauce and gently fold together until just combined.
Pour mixture into a baking dish.
Top with crispy onions and remaining cheddar and bake for 15 minutes or until top has browned and is bubbling.
Remove from oven, top with remaining green onion and season with more black pepper. Cool slightly and serve.