Melt the butter in a large pot over medium heat.
Add the chopped onion and cook for about 5 minutes, stirring occasionally, until softened and translucent. Add the garlic and cook for 30 to 60 seconds, stirring constantly, until fragrant.
Add the butternut squash, sweet potatoes, apple, chicken broth, salt, and black pepper.
Increase the heat and bring the soup to a boil. Cover the pot, reduce the heat to low, and simmer for 15 to 20 minutes, or until the squash, sweet potatoes, and apple are completely tender.
Remove the pot from the heat. Add the honey, if using.
Blend with an immersion blender until smooth and creamy.
Stir in the cinnamon, ginger, nutmeg, and ½ cup of heavy cream
Return the soup to low heat and warm gently. Add up to ¼ cup more heavy cream for a richer soup, if desired.
Do not bring the soup to a vigorous boil after adding the cream.
Stir in 1 teaspoon of apple cider vinegar or lemon juice. Taste and add up to 1 teaspoon more if the soup needs additional brightness.
Taste and add more salt, black pepper, or honey as needed. Add additional chicken broth if the soup is thicker than desired.
Serve warm with crusty bread. Garnish with a drizzle of cream, roasted pumpkin seeds, croutons, parsley, or freshly ground black pepper, if desired.