Preheat the oven to 350ºF. Line a muffin pan with paper liners or spray with cooking spray. Set aside.
First, make the streusel topping. In a small bowl, combine the flour, brown sugar, cinnamon, and butter. Cut the butter into the mixture using your fingers until mixture is coarse and crumbly. Set aside.
Next, make the cream cheese filling. Using a mixer, beat the cream cheese, sugar, and vanilla extract together until smooth, about 2 minutes. Place in the fridge while you make the muffins.
In a medium bowl, whisk together flour, spices, baking soda, and salt.
In a large bowl, combine the pumpkin, sugars, oil, buttermilk, eggs, and vanilla. Stir until smooth.
Gradually add the dry ingredients to the pumpkin mixture, and stir until just combined.
Fill each muffin cup with about 2 tablespoons of batter. Add a heaping spoonful of the cream cheese mixture to each muffin. Top the muffins evenly with the remaining batter, about 3/4 way full. Sprinkle the streusel topping over the tops.
Bake muffins for 23-26 minutes, or until a toothpick stuck in the middle comes out with just a few crumbs. Let cool completely.
While the muffins are cooling, make the cream cheese glaze. In a medium bowl, whisk together the cream cheese, powdered sugar, vanilla extract, and pinch of salt. Whisk until smooth.
Drizzle the cream cheese glaze over the cooled muffins. Serve.
Notes
Store the muffins covered on the counter for up to 2 days. You can store them in covered in the fridge too, just let them come to room temperature before eating.