Prep the pan and oven. Heat the oven to 350°F (175°C). Grease a 9x13-inch baking dish with butter.
Dry the bread slightly. If your bread is very fresh, spread the cubes on a sheet pan and bake for 8–10 minutes until lightly dry. This helps the custard soak in.
Toss the fruit. In a large bowl, combine sliced peaches, blueberries, lemon zest, and lemon juice.
Sprinkle with 1 tablespoon brown sugar and a pinch of cinnamon. Set aside.
Make the custard. In another bowl, whisk eggs, milk (and cream if using), granulated sugar, 1 tablespoon brown sugar, vanilla, cinnamon, nutmeg, and salt until smooth.
Combine with bread. Add bread cubes to the custard and gently fold until coated. Let sit for 5–10 minutes so the bread absorbs some liquid.
Layer it up. Spread half the soaked bread in the baking dish.
Scatter half the fruit over it. Add the remaining bread, then top with the rest of the fruit. Drizzle any leftover custard from the bowl on top.
Add butter and crunch. Drizzle melted butter over the surface.
Sprinkle with a little extra brown sugar and the nuts, if using.
Bake. Cover loosely with foil and bake for 25 minutes. Remove the foil and bake another 20–25 minutes, until the top is golden and the center is just set. A knife inserted in the center should come out with thick, custardy moisture, not liquid.
Rest and serve. Let the pudding rest for 10–15 minutes.
Serve warm as is, or top with ice cream or whipped cream.