Melt butter in a large pot over medium heat.
Sauté onion and carrot until softened, about 5 minutes.
Stir in garlic and cook 30 seconds until fragrant.
Sprinkle in flour and cook, stirring, 1 to 2 minutes to form a roux.
Whisk in broth gradually until smooth.
Add potatoes. Simmer gently, uncovered, until just tender, 10 to 12 minutes.
Stir in broccoli and cook until bright and tender, 6 to 8 minutes.
Lower heat. Stir in milk and half-and-half; do not boil.
Season with salt, pepper, Dijon, Worcestershire, and paprika.
Fold in cheddar by handfuls until melted and smooth.
Lightly mash a few potatoes or blend briefly for a creamier texture, if desired.
Serve hot. Garnish with chives and extra cheddar if you like.