Rinse and pat dry the broccoli and cauliflower, then cut into 1-inch florets. Peel and chop the broccoli stems, dice the onion and carrots, mince the garlic, and shred the cheddar, setting aside 1/2 cup for topping.
Melt the butter in a large Dutch oven over medium heat. Add the diced onion and carrots and cook for 6 to 8 minutes, stirring often, until soft and translucent.
Stir in the minced garlic and cook for 1 minute until fragrant. Sprinkle the flour over the vegetables and stir constantly for 1 to 2 minutes to cook out the raw flour taste.
Slowly pour in the broth about 1 cup at a time, stirring well after each addition to prevent lumps. Add the cauliflower, broccoli florets and stems, bay leaf, thyme, salt, and pepper, then bring to a boil.
Reduce the heat to medium-low, partially cover, and simmer for 15 to 20 minutes until the cauliflower is very soft. Discard the bay leaf.
Remove from heat and rest for 5 minutes. Blend with an immersion blender until smooth, or pulse for a more rustic texture. If using a countertop blender, work in batches and vent the lid for steam.
Return the pot to low heat and stir in the whole milk and heavy cream. Warm gently for 3 to 5 minutes until steaming hot, but do not let it boil.
Remove from heat and add 1 1/2 cups of the shredded cheddar one handful at a time, stirring until each handful melts. Taste and adjust salt and pepper, thinning with warm broth or milk if needed.
Ladle into warmed bowls and top each with reserved cheddar and chopped fresh chives. Serve hot.