Bring a large pot of salted water to a boil over high heat. Add the fiddleheads, return to a boil and cook until they are almost tender and turn pale green, 5 to 8 minutes. Drain and rinse with cold water. Coarsely chop and reserve.
Melt the butter in a saucepan over medium heat. Add the onion and cook, stirring occasionally, until they become translucent, about 5 minutes. Add the fiddleheads and chicken stock. Stir, increase the heat to medium-high and bring to a gentle boil. Cover and cook until the fiddleheads are thoroughly tender, about 5 minutes. Add the milk, reduce the heat to medium, and heat until nearly boiling. Do not let the soup boil or the milk will curdle.
Stir in the lemon zest and season the soup to taste with salt and pepper. Divide the soup into four bowls, garnish with paprika and serve immediately.