Preheat oven to 375°F. Butter a 3-quart casserole dish; set aside. Place the bread in a medium bowl. In a small saucepan over medium heat, melt 2 tablespoons butter. Pour the melted butter into the bowl with the bread, and toss. Set the breadcrumbs aside.
Warm the milk in a medium saucepan over medium heat. Melt the remaining 6 tablespoons butter in a high-sided skillet over medium heat. When the butter bubbles, add the flour. Cook, stirring, 1 minute.
While whisking, slowly pour in the hot milk a little at a time to keep mixture smooth. Continue cooking, whisking constantly, until the mixture bubbles and becomes thick, 8 to 12 minutes.
Remove the pan from the heat. Stir in salt, nutmeg, black pepper, cayenne pepper, 3 cups cheddar cheese, and 1 1/2 cups Gruyère (or 1 cup Pecorino Romano); set the cheese sauce aside.
Cover a large pot of salted water, and bring to a boil. Cook the macaroni until the outside of pasta is cooked and the inside is underdone, 2 to 3 minutes. Transfer the macaroni to a colander, rinse under cold running water, and drain well. Stir the macaroni into the reserved cheese sauce.
Pour the mixture into the prepared dish. Sprinkle the remaining 1 1/2 cups cheddar cheese, 1/2 cup Gruyère (or 1/4 cup Pecorino Romano), and the breadcrumbs over the top. Bake until golden brown, about 30 minutes (though we needed a bit more time to get it brown, but your oven may vary). Transfer the dish to a wire rack for 5 minutes; serve.