Preheat your oven to 350°F (175°C) and grease a muffin tin or line it with muffin liners.
In a large mixing bowl, whisk together the flour, granulated sugar, baking powder, baking soda, salt, and ground cinnamon.
In another bowl, whisk together the eggs, milk, vegetable oil, and vanilla extract until well combined.
Pour the wet ingredients into the dry ingredients and gently fold them together until just combined. Be careful not to overmix.
Fold in the diced fresh peaches until evenly distributed in the batter.
In a separate bowl, prepare the streusel topping by combining the flour, brown sugar, and ground cinnamon.
Add the cubed cold butter into the flour mixture and use a fork or your fingers to work it until crumbly. Stir in the chopped nuts if using.
Divide the muffin batter evenly among the 12 muffin cups, filling each about ¾ full.
Sprinkle the streusel topping generously over each muffin.
Bake in the preheated oven for 18-20 minutes or until a toothpick inserted comes out clean.
Allow the muffins to cool in the tin for 5 minutes, then transfer them to a cooling rack to cool completely.