Heat the oil in an 8- to-10-inch nonstick saute pan over medium heat. Add the shallots and zucchini and cook until just beginning to soften, 3 to 4 minutes.
Meanwhile, beat the eggs with the milk. Add the Parmigiano and sprinkle with salt and pepper. Stir until combined.
When the courgette have softened, remove the pan from the heat and add the courgette to the eggs. Stir to combine.
Add the butter to the same pan and swirl to melt. Add the egg and zucchini mixture and top with the torn courgette flowers if using. Cover the pan and cook over medium-low heat until the edges of the frittata begin to brown and the center has set and is puffed slightly, about 8 minutes.
To serve, turn the frittata out onto a cutting board top-side-up. Slice and eat with Tuscan bread.