Preheat the oven to 350°. Butter a large gratin or casserole dish.
Bring a large pot of salted water to a boil. Boil the cauliflower until just crisp tender, 3–5 minutes. Drain well, then transfer to the buttered gratin dish.
Melt the butter in a saucepan over moderate heat. Whisk in the flour and cook, whisking constantly, for 1 minute. Whisk in the garlic powder then slowly add the milk, whisking constantly, until fully incorporated and smooth. Simmer gently, whisking the whole time, until slightly thickened, about 3 minutes. Reduce the heat to low and add the cream cheese and half of the cheddar, stirring until melted. Remove from the heat and season to taste with salt and pepper.
Pour the cheese sauce over the cauliflower, along with half of the bacon and half of the scallions. Toss gently to coat.
Bake for 25 minutes, then sprinkle the remaining cheese and bacon over the cauliflower. Bake until melted and bubbling, 5–10 minutes more. Remove from the oven and sprinkle the remaining scallions over top. Serve warm.