In a medium bowl, whisk together the flour, baking powder, and salt.
In a large mixing bowl or the bowl of a stand mixer fitted with the paddle attachment, beat the butter, granulated sugar, and brown sugar on medium speed until light and fluffy, about 3 minutes.
Add the eggs one at a time, beating well between each addition. Scrape down the bowl, then add the sour cream and vanilla, and mix on low speed until combined. Scrape down the bowl.
Add the dry mixture to the wet mixture and beat on low speed until just combined, then use a spatula to scrape the bowl down and mix in any stray bits.
Spoon about half of the batter evenly into the prepared muffin cups, filling each about a third of the way. Sprinkle the cinnamon filling evenly over the batter in each cup. Top with the remaining batter, dividing evenly and covering the filling completely, so the tins are about two-thirds full.
Sprinkle the streusel topping generously over each muffin, gently pressing it down so it adheres.
Bake for 22 to 24 minutes, until a toothpick inserted in the center comes out clean. Let the muffins cool in the pan for at least 10 minutes before transferring to a cooling rack.
If making the glaze, whisk together the powdered sugar, milk, and vanilla in a small bowl until smooth. Drizzle over the muffins once cooled.