Preheat the oven to 350F. Make the cookies: Add the softened butter and brown sugar to a bowl and use a stand mixer or hand mixer to mix for 3-4 minutes, until the mixture is lighter and fluffy.
Add the egg, molasses, and vanilla and mix until fully combined.
Add the flour, cinnamon, ginger, salt, baking soda, and baking powder. Mix until just combined.
In another bowl, add all the ingredients for the streusel: softened butter, brown sugar, flour, cinnamon, and salt. Use a stand mixer or hand mixer to combine until a dough forms. The dough should stick together when squeezed in a ball, but should crumble when you run it between your fingers.
Use a large cookie scoop to scoop the gingerbread dough onto a cookie sheet. Using the backside of the cookie scoop, make an indent on the top of the dough. Sprinkle a few tablespoons of the streusel on the top of the cookie, into the indent.
Transfer the cookies to the oven and bake for 8-10 minutes. Let the cookies cool on the cookie sheet for 10 minutes, then transfer to a cooling rack to cool completely.
While the cookies cool, make the icing. Add the powdered sugar, milk, and vanilla to a bowl. Whisk until smooth. If the icing is thicker than you want, add more milk. If it is too runny, add more powdered sugar.
When the cookies are cooled, drizzle each cookie with icing. Enjoy!