Heat 1 tbsp olive oil in a large pot over medium heat; sauté leeks and onion until soft, about 6–8 minutes.
Add garlic and cook 30 seconds until fragrant. Stir in potatoes and pour in broth; bring to a simmer.
Cook until potatoes are tender, 15–20 minutes. Use an immersion blender for a smooth soup or mash slightly for texture.
Stir in milk if using, warm through, and season with salt and pepper.
Meanwhile, heat butter or oil in a small skillet and fry shallot slices until crisp and golden, about 3–4 minutes; drain on paper towels.
Serve soup topped with crispy shallots and chopped chives.