Preheat oven to 400°F and line a large rimmed baking sheet with parchment paper.
Peel the butternut squash, scoop out the seeds, and cut into 1-inch cubes. Peel the sweet potatoes and cut into similar-sized cubes.
Spread the squash and sweet potatoes on the baking sheet in a single layer, drizzle with 2 tablespoons olive oil, season with salt and pepper, and toss to coat.
Roast for 25-30 minutes, flipping halfway, until fork-tender and lightly caramelized at the edges.
While vegetables roast, heat remaining 1 tablespoon olive oil in a large Dutch oven over medium heat.
Add the onion, carrots, and celery, and cook for 6-8 minutes until onion is soft and translucent.
Stir in the minced garlic and grated ginger, and cook for 30-60 seconds until fragrant.
Sprinkle the cinnamon and nutmeg into the pot and stir to coat, toasting for about 30 seconds.
Pour in the chicken broth, stir to combine, and bring the mixture to a gentle simmer.
Once the roasted squash and sweet potatoes are done, add them to the simmering pot.
Simmer uncovered for 10-15 minutes to allow the flavors to meld.
Turn off the heat and use an immersion blender directly in the pot to puree until completely smooth.
Stir in the heavy cream (if using) and maple syrup. Warm gently over low heat, but do not boil.
Season with additional salt and pepper to taste.
Ladle into bowls, top with roasted pepitas and fresh herbs, and serve warm.