For the streusel: Stir together flour, sugar, pecans, cinnamon, and salt in a medium bowl. Add the butter, and pinch and smear mixture between your fingers until butter is evenly incorporated and mixture clumps together. Cover and chill until ready to use.
For the muffins: Preheat the oven to 375°. Line a 12-cup muffin tray with paper liners. Set aside.
Whisk together the flour mixture, cinnamon, baking powder, baking soda, and salt in a medium bowl. Whisk together the eggs, sugar, oil, and vanilla in a large bowl until smooth and well combined, about 1 minute. Add the flour in two batches, whisking in between each addition, until smooth and just combined. Stir in the carrots.
Divide the batter evenly between the prepared muffin cups, filling each about two-thirds full. Sprinkle the streusel evenly over the batter, about 1 ½ tablespoons in each cup.
Bake the muffins until browned and a toothpick inserted in the center comes out clean, 20 to 22 minutes. Transfer the muffins to a wire rack to cool completely, about 30 minutes.
For the icing: Combine butter and cream cheese in a medium microwavable bowl. Microwave in 10 second intervals, whisking after each, until the mixture is softened and smooth, 20 to 30 seconds. Add the powdered sugar and milk, then whisk until well combined. (Add additional milk, 1 teaspoon at a time, if needed.) Drizzle the muffins with the icing and let stand for 15 minutes before serving.
