Heat oven to 375°. Butter a 3 quart caserole dish; set aside. Place the bread in a medium bowl. In a small saucepan over medium heat, melt 2 tablespoons butter. Pour butter into bowl with bread and toss. Set the bread crumbs aside.
In a medium saucepan set over medium heat, heat the milk. Melt remaining 6 tablespoons butter in a medium pot over medium heat. When butter bubbles add flour. Cook, stirring, for 1 minute.
While whisking slowly pour in hot milk. Continue cooking, whisking constantly, until the mixture bubbles and becomes thick.
Remove the pan from the heat. Stir in salt, nutmeg, black pepper, cayenne pepper, 3 cups cheddar cheese, and 1 1/2 cups gruyere or 1 cup pecorino romano; set cheese sauce aside.
Fill a large saucepan with water; bring to a boil. Add macaroni; cook 2 to 3 minutes less than manufacturer's directions until the outside of pasta is cooked and the inside is underdone. Transfer the macaroni to a colander, rinse under cold running water, and drain well. Stir macaroni into the reserved cheese sauce.
Pour mixture into prepared dish. Sprinkle remaining 1 1/2 cups cheddar cheese, 1/2 cup gruyere or 1/4 cup pecorino romano, and bread crumbs over top. Bake until browned on top, 45 to 60 minutes. Transfer dish to a wire rack to cool for 5 minutes. Serve with sour cream if desired.