Heat the oven to 400°F (205°C). Prick the sweet potatoes all over with a fork, place on a foil-lined sheet pan, and roast until a knife slides in easily, 45–55 minutes. Reduce the oven temperature to 350°F (175°C).
While the potatoes roast, make the streusel: In a bowl, combine the flour, brown sugar, cinnamon, nutmeg, and ginger. Drizzle in the melted salted butter and toss with a fork until sandy clumps form.
For extra crunch, spread the streusel on a small parchment-lined pan and pre-bake during the last 6–8 minutes of potato roasting until just set and fragrant. Let cool. Grease a 9×13-inch casserole dish with butter.
When the potatoes are cool enough to handle, peel and transfer the flesh to a large bowl. Mash until mostly smooth, then beat in the melted unsalted butter, brown sugar, maple syrup, vanilla, cinnamon, nutmeg, salt, and orange zest until combined.
In a separate bowl, whisk together the milk and eggs. Stream this mixture into the warm potatoes while beating with a hand mixer or sturdy whisk until light and fluffy, 30–60 seconds.
Spread the sweet potato mixture into the prepared dish and bake at 350°F for 15–20 minutes, until steaming and just set around the edges.
Top and finish: Arrange about 1½ cups of the mini marshmallows in a border around the edges. Sprinkle the streusel evenly over the center. Bake 8–10 minutes, then scatter the remaining marshmallows over the top and broil 1–2 minutes until golden in spots. Rest 5–10 minutes before serving warm.