Preheat oven to 400°F. Spread cauliflower florets on a sheet pan. Drizzle with olive oil, season with salt and pepper, and roast 15–20 minutes, or until fork-tender with golden edges.
Set a large pot over medium heat and add the butter. When the butter is melted, add the onion and cook for 3 minutes, stirring frequently, until softened. Stir in garlic and cook for an additional 30 seconds.
Whisk in the flour and cook, stirring continuously, for 1 minute.
Gradually whisk in the broth, about ½ cup at a time, until smooth. Stir in the half-and-half and bring just to a simmer.
Remove the pot from the heat and add the roasted cauliflower. Stir in Cheddar and Gruyère cheeses, a handful at a time, until melted and smooth.
Adjust seasoning to taste, sprinkle with chives, and serve hot.