Up to three days before serving: Fill a large pot about 3/4 full with water. Stir in about 1 Tbsp of salt (not on ingredients list). Peel the potatoes and slice into even pieces. Add to pot of water. Cover and bring to a boil over medium-high heat. Remove cover and reduce heat to a low simmer. Simmer until potatoes are easily pierced with a fork, 15 to 25 minutes (depending on size of potatoes).
Drain potatoes. Cover the colander with a distowel or lid. Let the potatoes sit in the colander, covered, for 10 minutes (the potatoes will lightly steam; this will draw out the moisture and prevent watery mashed potatoes).
While potatoes are steaming, combine 4 Tbsp butter, salt, and 2 cups half and half. Heat in the microwave or on the stovetop until butter is melted.
Mash the potatoes with a masher or by running them through a ricer. (I prefer the ricer for the most light and fluffy potatoes.)
Slowly add the half and half mixture to the potatoes until very smooth and creamy. (You may not need all of the liquid, but if the potatoes are naturally very starchy they will need all of it.) Taste and season with more salt, as needed.
Transfer potatoes to a microwave and broiler-safe casserole dish (make sure there is enough room to stir the potatoes with some extra half and half before cooking).
Cover tightly and refrigerate for up to 3 days.
The day of serving: Heat oven to 350°F / 177°C.
Reheat the potatoes in the microwave just until warm, stirring every 30 seconds. Heat 1 cup of half and half in the microwave until warm to the touch.
Gradually stir the warm half and half into the warm potatoes until creamy. (The amount you need to add will depend on how much the potatoes dried out in the fridge.)
Make the topping: Melt 4 Tbsp of butter. Stir in the parmesan cheese. Pour over the top of the potatoes, using a spoon to spread it out evenly.
Bake potatoes, uncovered, until hot, ~30 minutes. For an extra golden crust on top, broil for 2 to 3 minutes at the end of cooking.