Preheat oven to 375 degrees F. Spray a 3-quart casserole dish with cooking spray; set aside. Place bread pieces in a medium bowl. Melt 2 tablespoons butter and pour it into bowl with the bread; toss. Set the breadcrumbs aside. In a medium saucepan, heat milk over medium heat. Melt remaining 6 tablespoons butter in a high-sided skillet over medium heat. When butter bubbles, add flour. Cook, stirring, 1 minute.
Slowly pour hot milk into flour-butter mixture while whisking. 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 and 1 ½ 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 fewer minutes than manufacturer’s directions, until outside of pasta is cooked and inside is underdone. Transfer the macaroni to a colander and rinse under cold water; drain well. Stir macaroni into the reserved cheese sauce.
Pour mixture into prepared casserole dish. Sprinkle remaining 1 ½ cups cheddar and ½ cup Gruyere or ¼ cup pecorino Romano; scatter breadcrumbs over the top. Bake until browned on top, about 30 minutes. Transfer dish to a wire rack to cool for 5 minutes; serve.