Prepare the potatoes and cut them into approximately ¾-inch cubes.
Add chopped bacon to a large Dutch oven over medium heat.
Cook until golden and crisp.
Transfer bacon to a paper-towel-lined plate using a slotted spoon.
Leave approximately 2 tablespoons bacon drippings in the pot.
Add onion and cook for 4–5 minutes until softened.
Add garlic and cook for approximately 30 seconds.
Add butter and allow it to melt.
Sprinkle in flour and stir continuously for approximately 1 minute.
Slowly pour in chicken broth while stirring.
Add potatoes, smoked paprika, black pepper, and salt.
Bring to a gentle simmer.
Reduce heat and partially cover.
Cook for 15–20 minutes, or until the potatoes are fork-tender.
Use a potato masher to gently mash approximately one-third of the potatoes.
Reduce heat to low.
Stir in whole milk.
Stir in heavy cream.
Heat gently without bringing the soup to a vigorous boil.
Gradually stir in freshly shredded cheddar until melted.
Stir approximately half of the crispy bacon and 2 tablespoons chives into the soup.
Taste and adjust salt and pepper.
Add a splash of broth or milk if the soup is too thick.
Ladle into bowls.
Top with remaining bacon, fresh chives, optional cheddar, and black pepper.
Serve hot.