To assemble the casserole, spray a 9-by-13-inch baking dish with nonstick spray. Fill a large pot ¾ full of water and bring to a boil over high heat. Meanwhile, prepare an ice bath. Season the water with salt, add the broccoli florets, and blanch until bright green and barely tender, about 1 minute. Using a skimmer, transfer the broccoli to the ice bath to halt the cooking. When the broccoli is fully chilled, drain well, pat dry with paper towels, and set aside.
In a small sauté pan, heat the olive oil over medium-high heat. Add the onions and a couple of pinches of salt and cook, stirring occasionally, until the onions are soft, about 4 minutes. Remove from the heat and set aside to cool.
In a large bowl, combine the broccoli, cooled onions, ham, Cheddar cheese, and bread cubes. Toss gently to combine, and then transfer to the prepared baking dish, spreading the mixture in an even layer.
Using the same bowl, whisk together the eggs, half-and-half, chives, 1 ¼ teaspoons salt, paprika, and cayenne until thoroughly mixed. Pour over the broccoli mixture. Cover with plastic wrap and store in the refrigerator for at least 4 hours or up to overnight. About 30 minutes before baking, remove the casserole from the refrigerator and allow to come to room temperature.
To bake, preheat the oven to 375 degrees. Remove the plastic wrap from the baking dish and cover the dish with aluminum foil. Place in the oven and bake for 45 minutes. Remove the foil and sprinkle the Parmesan cheese evenly over the top. Return the casserole, uncovered, to the oven and continue baking until the top is golden brown and puffed and the casserole is cooked through when tested with a knife, about 15 minutes longer.
Transfer the casserole to a rack and let rest for 10-15 minutes before serving. Cut into squares to serve.