In a large saucepan, heat the oil until shimmering. Add the onion and cook over moderate heat until translucent, 5 minutes. Add the garlic and cook until fragrant, 1 minute. Stir in the flour to make a paste. Gradually whisk in the milk until smooth. Bring to a simmer, whisking, until the sauce thickens. Reduce the heat to low and simmer, whisking often, until no floury taste remains, 7 minutes. Add the celery seeds, mace, Tabasco and cayenne. Stir in the cheeses just until they melt. Remove from the heat and season the sauce with salt and pepper.
Butter a large, shallow baking dish. In a large pot of boiling salted water, cook the pasta shells until almost al dente, about 4 minutes. Drain the pasta and return it to the pot. Stir in the cheese sauce until thoroughly combined. Transfer the mixture to the prepared dish and let stand for 20 minutes.
Meanwhile, preheat the oven to 425°. Bake the pasta in the upper third of the oven for 25 minutes, until it's bubbling and starting to brown. Turn the broiler on and broil the pasta for about 1 minute, until it's browned and crisp on top. Let the mac and cheese rest for 10 minutes before serving.