Preheat your oven to 400°F (200°C). Grease a 2-quart baking dish or a similar casserole dish with a little butter or nonstick spray.
Peel (or wash well if leaving skins on) and cut the potatoes into evenly sized chunks, about 1 to 1½ inches. Place them in a large pot and cover with cold water by about an inch.
Bring the pot to a boil over high heat, then reduce to a simmer. Cook the potatoes until very tender when pierced with a fork, about 15–20 minutes depending on size.
While the potatoes cook, warm the milk and butter together in a small saucepan or microwave until the butter is melted and the milk is hot but not boiling.
Drain the potatoes well and return them to the hot pot. Let them sit for a minute to allow excess steam to escape—this helps keep the mash from being watery.
Mash the potatoes with a potato masher or ricer until mostly smooth. Stir in the warmed milk and butter mixture, sour cream, garlic powder, onion powder, and half of the cheddar cheese. Season generously with salt and pepper, tasting to adjust.
Spoon the mashed potatoes into the prepared baking dish and smooth the top. Sprinkle the remaining cheddar and the mozzarella evenly over the surface. If using, add the grated parmesan on top for extra crispiness.
Bake in the preheated oven for 20–25 minutes, until the cheese is melted and bubbling. For a golden, crispier top, switch the oven to broil for 1–2 minutes—watch closely to avoid burning.
Remove from oven and let the dish sit for 5 minutes. Sprinkle chopped chives or green onions over the top for a fresh finish, then serve warm.
Leftovers can be reheated in the oven at 350°F (175°C) until warmed through, or individual portions microwaved—cover loosely to prevent drying.