Warm the butter and milk in a saucepan over medium low heat until butter is melted and reaches 120-130°F.
In the bowl of a stand mixer fitted with a dough hook, or in a large bowl if you plan to mix by hand, add 1 1/2 cups of the flour, sugar, salt, and yeast.
Add the warm butter mixture and egg and mix to make a wet dough.
With the mixer running, add remaining flour, 1/4 cup at a time, until dough mostly clears the bowl but still feels sticky. Knead the dough a few minutes more until smooth and elastic.
Cover with plastic wrap and let rise in a warm place until doubled, about 1 hour.
Gently punch down the dough to release gases and knead to bring back into a ball. Let sit for a few minutes while you get the filling ingredients ready.
On a lightly floured surface, roll out the dough into a rectangle roughly 12x17-inches. No need to be exact.
Spread melted butter evenly over the rolled dough. Sprinkle with brown sugar and ground cinnamon.
Starting with one long end, gently roll up dough into a log. Using a sharp knife or unscented floss, remove ends to make a clean edge and cut into 11 rolls.
Place on a sheet pan lined with parchment (see Notes) about 1 1/2 to 2 inches apart to make a tree shape: 1 roll on top row, 2 rolls in next row, 3 rolls in next row, 4 rolls in next row, and 1 roll for the trunk at the bottom.
Cover with plastic wrap and let rise in a warm place until doubled again, 20-30 minutes. Meanwhile, preheat oven to 350°F.
Bake until cinnamon rolls are golden brown, 22-25 minutes.
Make the frosting: In a bowl with an electric mixer, beat the butter, cream cheese, powdered sugar, and milk or eggnog until smooth and creamy. Add more milk or eggnog if needed to get a spreadable consistency.
Spread frosting over warm or cooled rolls. Sprinkle with holiday sprinkles if desired.