Preheat oven to 350 degrees. Line muffin cups with paper liners and coat with nonstick spray.
To make the topping, in a small bowl, combine flour, brown sugar, and cinnamon. Cut in butter until mixture resembles coarse crumbs. Stir in nuts; set topping aside.
In a medium bowl, whisk together flour, baking powder, baking soda, salt, cinnamon, and ginger. In another bowl, beat sugar, butter, and oil, until light and fluffy. Beat in eggs, one at a time, until incorporated.
Stir in sour cream. Add to flour mixture and stir just until moistened. Batter should be lumpy.
Spoon half of the batter into the prepared muffin cups, filling each one-third full. Top with half of the topping, the remaining batter, and the remaining topping.
Bake until golden and a wooden toothpick inserted in center comes out clean, about 25 minutes. Cool in muffin cups on a wire rack for 5 minutes.