Bring a large pot of salted water to a boil. Turn heat to low, and add cauliflower florets to cook for about 5 minutes (they should be a bit tender but still firm). Drain and set aside.
Meanwhile, add 2 tablespoons of the butter to a medium saucepan and melt over low heat. Add the flour (3 tablespoons) and stir together for about 1 minute to form a roux. Turn heat up to medium-high and gradually pour the milk in, whisking constantly, until no clumps remain. Bring to a gentle boil, turn heat back to low, and whisk constantly for about 1 minute, until it's thickened. Turn off the heat and stir in 1/2 cup of the shredded gruyere cheese and 1/2 cup of the grated parmesan cheese until melted. Season to taste with kosher salt and black pepper.
In a small bowl or pyrex measuring cup, melt the remaining 2 tablespoons of butter. Add the breadcrumbs (1/2 cup) and the remaining 1/4 cup shredded gruyere and 1/4 cup grated parmesan. Stir together so everything is well coated in the butter.
Pour enough of the sauce in the bottom of an 8x11 or 9x13 baking dish, or a 10" or 12" cast iron skillet to thinly coat the bottom (about 1/3 of the sauce). Add the cauliflower florets on top evenly. Pour the remainder of the sauce evenly on top of the cauliflower. Sprinkle the breadcrumb mixture evenly on top of that.
Bake at 375 degrees F for 35-40 minutes, or until golden brown and bubbly. Serve hot or at room temperature.
Notes
This is best served fresh, as the breadcrumbs will get soggy if stored in the fridge, but leftovers will stay good for 2-3 days in the fridge (and are still yummy!).
Frozen cauliflower florets can also be used- just toss them frozen into the boiling water and proceed with the recipe.
For a gluten-free version, use gluten-free all-purpose flour and gluten-free breadcrumbs OR you can omit the breadcrumbs+butter topping and just sprinkle the extra cheese on top.
This recipe is adapted from Ina Garten's cauliflower gratin.