In a large pot, melt the butter over medium heat. Add the diced onion and sauté until translucent, about 5 minutes. Stir in the minced garlic and cook for an additional minute until fragrant.
Add the diced potatoes to the pot and pour in the broth. Bring to a boil, then reduce the heat to a simmer. Cover and cook for 15-20 minutes, or until the potatoes are tender.
Once the potatoes are cooked, use a potato masher to mash some of the potatoes in the pot for a thicker texture, leaving some chunks for heartiness.
Stir in the heavy cream, shredded cheddar cheese, salt, black pepper, paprika, and cayenne pepper (if using). Cook over low heat, stirring occasionally, until the cheese is melted and the soup is heated through, about 5 minutes.
Taste and adjust seasoning if necessary. Serve hot, garnished with chopped green onions or chives.