To make the dough: Place the yeast and ½ teaspoon sugar in a small bowl. Add the lukewarm water and stir gently to mix. Set aside until foamy, 5 to 10 minutes. In a stand mixer fitted with a dough hook, mix together the flour and 1/4 cup sugar.
In a medium saucepan, scald the milk (bring almost to a boil, until milk is just simmering). Allow to sit for 1 minute to cool just slightly (or just add cold milk — see note above).
With mixer on low, add the water-yeast mixture, milk, and melted butter. Add eggs one at a time.
When the dough begins to come together, after 2 to 3 minutes, turn off mixer and scrape down the sides. Raise the speed to high and mix for another 5 to 10 minutes until the dough is shiny, elastic, and smooth. It may seem like a long time to mix, but the result is worth the wait. (You can also knead vigorously by hand for 10 minutes if you don’t have a stand mixer.)
Place dough in a greased bowl with a damp towel on top. Allow to rise 1 to 2 hours.
Prepare two 8 1/2-by-4 1/2 greased loaf pans.
Cut the dough into two equal parts (use a food scale for precision). Set aside one half of the dough.
Roll out the one piece of dough into a large rectangle. Using a pizza cutter or dough cutter, cut the dough down the middle lengthwise, then cut into approximately 3 inch squares.
Roll each square until slightly elongated with a rolling pin.
Brush each piece of dough with the garlic butter, then top with cheese. Fold into smaller squares/rectangles.
Once all the pieces of dough are filled with butter and cheese, place in a greased loaf pan so they are standing up. You can alternate with seam on top and seam on the bottom.
Repeat with the other piece of dough.
Lightly drape a kitchen towel over the top of pans. Allow to rise another 15-30 minutes. Preheat oven to 350°F while the dough rises.
Top with any additional cheese.
Bake for 30-35 minutes, until golden on top.
Brush with remaining melted butter as soon as you remove from the oven. Serve warm with tomato sauce for dipping if desired.