Cook the sausage. If using sausage, add it to a Dutch oven or heavy-bottomed soup pot over medium heat. Cook until browned and cooked through, breaking it up as it cooks. Drain off any excess fat, transfer the sausage to a bowl, and set aside.
Cook the leeks and onion. Add the butter, onion, and leeks to the same pot. Cook for about 10 minutes, stirring occasionally, until very soft. Covering the pot and reducing the heat to medium-low can help them soften more quickly. Continue stirring occasionally so they cook evenly.
Add the garlic and seasonings. Add the garlic and cook, stirring frequently, for 1 minute. Stir in the salt, if not using sausage, and the black pepper.
Cook the potatoes. Add the potatoes and chicken broth. Stir, increase the heat to medium-high, and partially cover the pot. Bring to a simmer, then reduce the heat as needed to maintain a gentle simmer. Cook for 10–15 minutes, or until the potatoes are very tender and easily pierced with a fork.
Mash the potatoes. Use a potato masher to mash the potatoes directly in the pot until the soup reaches your desired consistency. Leave some pieces of potato for texture, if you like.
Finish the soup. Stir in the heavy cream and the reserved cooked sausage, if using. Heat through gently.
Taste and serve. Taste and adjust the salt, if needed. Garnish with chopped chives or green onions. A dollop of sour cream is also delicious on top.
Serve with crusty bread or crispy croutons.