Prep the potatoes. Peel and cut into even chunks so they cook at the same pace. Rinse off any surface starch under cool water. Not mandatory, but it helps keep the mash from getting gluey.
Start in cold, salted water. Add potatoes to a large pot and cover with about an inch of cold water. Salt the water like you would for pasta (it should taste pleasantly salty). If using whole garlic cloves, add them now to infuse the water gently.
Simmer, don’t aggressively boil. Bring to a gentle boil, then reduce to an easy simmer. Cook until the potatoes are very tender—when a knife slides in and out smoothly, about 15 to 20 minutes depending on chunk size. Overcooked is better than undercooked here; undercooked potatoes won’t mash smoothly.
Drain and dry. Drain well in a colander, then return the potatoes to the hot pot. Set the pot back over low heat for 1 to 2 minutes, shaking occasionally, to steam off excess moisture. This step makes a big difference in texture.
Warm the dairy. While the potatoes cook—or now in the microwave—gently warm the milk or half-and-half. Keep the butter and cream cheese at room temperature if you can. Warm dairy mixes in more easily and keeps the mash from tightening up.
Mash. Use a potato masher for a homey texture or a ricer for an extra-smooth finish. Start mashing the potatoes on their own first to break them up.
Add the good stuff. Mash in the butter and cream cheese until melted and incorporated. Add about half the warm milk, stir, then add more as needed until the potatoes are creamy but still hold soft peaks. Season with 1 teaspoon salt and the pepper. Taste and adjust. If using garlic powder, stir it in now.
Finish and serve. Let them sit for a minute—they thicken slightly as the starch relaxes. If they feel stiff, splash in a bit more warm milk. Spoon into a warm bowl and garnish with chives or parsley if you like.