Preheat your oven to 350°F (175°C) and line a standard 12-cup muffin tin with paper liners or spray with non-stick cooking spray.
Prepare the streusel topping first by combining flour, brown sugar, cinnamon, and salt in a medium bowl. Add cold cubed butter and use your fingers or a pastry cutter to work the mixture until it resembles coarse crumbs. Stir in nuts if using. Place in refrigerator while preparing the batter.
In a large bowl, whisk together the flour, baking soda, pumpkin pie spice, and salt for the muffin batter. Set aside.
In a separate bowl, combine the pumpkin purée, sugar, oil, eggs, milk, and vanilla extract. Whisk until smooth and well combined.
Pour the wet ingredients into the dry ingredients and stir gently just until combined. Be careful not to overmix – a few small lumps are fine!
Divide the batter evenly among the prepared muffin cups, filling each about ¾ full.
Generously sprinkle the streusel topping over each muffin, gently pressing it into the batter slightly so it adheres during baking.
Bake for 25-30 minutes or until a toothpick inserted in the center comes out clean or with just a few moist crumbs.
Allow the muffins to cool in the pan for 5 minutes before transferring to a wire rack to cool completely.