On 2 large rimmed baking sheets, toss the Brussels sprouts with the oil and season with salt and pepper. Roast for about 40 minutes, stirring halfway through, until the sprouts are tender and browned in spots.
Meanwhile, in a small saucepan, combine the cranberries, maple syrup, ginger, and orange zest. Cook over moderately low heat, stirring, until the cranberries break down and thicken, about 10 minutes.
In a medium skillet, cook the butter over moderately 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 serve warm.