Bring a large pot of salted water to a boil. Add the elbow macaroni and cook according to the package instructions until al dente. Drain the pasta, reserving about 1/2 cup of pasta water in case the sauce needs thinning. Set the macaroni aside.
Melt the butter in a large saucepan over medium heat. Sprinkle in the flour and whisk continuously for 1 to 2 minutes, until the mixture forms a smooth paste and smells slightly nutty. Avoid letting it brown too much, as a lighter roux helps maintain a creamy cheese sauce.
Gradually pour in the warm milk while whisking to prevent lumps. Add the heavy cream and continue whisking until the mixture is smooth. Cook for 3 to 5 minutes, stirring frequently, until the sauce thickens enough to coat the back of a spoon.
Reduce the heat to low. Stir in the garlic powder, onion powder, smoked paprika, salt, black pepper, and cayenne pepper, if using. Add the shredded Pepper Jack and cheddar a handful at a time, stirring after each addition until melted. Keep the heat low to help prevent the cheese sauce from becoming grainy.
Add the drained macaroni to the cheese sauce and stir gently until every piece is coated. If the sauce is too thick, add a little reserved pasta water or warm milk until it reaches your preferred consistency. Taste and adjust the seasoning as needed.
Remove the saucepan from the heat and let the macaroni and cheese rest for 1 to 2 minutes. Sprinkle with chopped fresh parsley, if desired, and serve immediately while the sauce is smooth and creamy.