Heat oven to 375°F (190°C). Butter a 3-quart casserole dish; set aside.
Place white bread in a medium bowl.
In a small saucepan over medium heat, melt 2 tablespoons of unsalted butter. Pour butter into the bowl with the bread, and toss.
Set breadcrumbs aside.
In a medium saucepan set over medium heat, heat milk.
Melt remaining 6 tablespoons of unsalted butter in a high-sided skillet over medium heat. When butter bubbles, add all-purpose flour. Cook, whisking, for 1 minute.
While whisking, slowly pour in hot milk. Continue cooking, whisking constantly, until the mixture bubbles and becomes thick.
Remove pan from heat. Stir in salt, freshly grated nutmeg, ground black pepper, cayenne pepper, 3 cups of shredded cheddar cheese, and 1 1/2 cups of Gruyere or 1 cup of Pecorino Romano; set cheese sauce aside.
Fill a large saucepan with water; bring to a boil. Add elbow macaroni; cook 2 to 3 minutes less than manufacturer’s directions, until the outside of pasta is cooked and the inside is underdone.
Transfer 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 of cheddar cheese, 1/2 cup of Gruyere or 1/4 cup of Pecorino Romano, and breadcrumbs over top.
Bake until browned on top, about 30 minutes. Transfer dish to a wire rack to cool for 5 minutes; serve hot.