Heat the oven: Preheat to 375°F (190°C).
Lightly grease a 9x13-inch baking dish.
Cook the bacon: In a large skillet over medium heat, cook chopped bacon until crisp, 6–8 minutes. Transfer to a paper towel–lined plate. Reserve 1 tablespoon of bacon drippings in the skillet; discard the rest or save for another use.
Par-cook the cauliflower: Bring a large pot of salted water to a boil.
Add florets and cook 3–4 minutes, until just fork-tender. Drain well and spread on a towel to steam-dry for a few minutes. Dry florets help the sauce cling.
Make the cheese sauce base: In the skillet with bacon drippings, melt butter over medium heat. Whisk in flour to form a roux; cook 1 minute, stirring.
Slowly whisk in milk and cream until smooth. Simmer 2–3 minutes until slightly thickened.
Add flavor: Whisk in cream cheese, Dijon, garlic powder, onion powder, smoked paprika, 1 teaspoon salt, and 1/2 teaspoon pepper. Stir until smooth and creamy.
Melt in the cheddar: Reduce heat to low.
Stir in 1 1/2 cups shredded cheddar until melted. Taste and adjust seasoning. The sauce should be well-seasoned before it hits the cauliflower.
Combine: Add the drained cauliflower to the skillet (or a large bowl) and toss gently to coat. Fold in half the bacon and half the green onions.
Assemble: Spoon the mixture into the prepared baking dish.
Sprinkle with the remaining 1/2 cup cheddar and, if using, Parmesan and breadcrumbs/pork panko for crunch. Top with the remaining bacon.
Bake: Bake 18–22 minutes, until bubbling around the edges and the top is lightly golden.
Finish and serve: Let rest 5–10 minutes to set. Garnish with remaining green onions.
Serve warm.