Preheat oven to 400 degrees.
On a large rimmed baking sheet, toss the Brussels sprouts with the olive oil, salt, and pepper. Roast for 30 to 40 minutes, stirring once halfway through, until the sprouts are browned in spots and tender. (Roast less time for smaller sprouts; longer for larger sprouts).
Meanwhile, in a small saucepan, combine the cranberries, maple syrup, ginger, and orange zest. Cook over moderately low heat, stirring often, until the cranberries break down and thicken, about 10 minutes.
In a medium skillet, cook the butter over medium-high heat until deep golden, about 4 minutes. Remove from the heat, add the shallots and thyme, and stir into the cranberry sauce.
Transfer the butter-cranberry mixture to a serving bowl, add the Brussels sprouts, and toss. Season with salt and pepper. Serve warm.