Trim the attractive top tips from the asparagus, about 1 to 1 1/2 inches in length. Cut the woody stem ends from each spear and reserve. Cut the remaining tender stalks into 1/2-inch pieces.
In a medium pot, bring the stock to a boil. Add the tough woody stems, lower the heat and simmer to infuse with asparagus flavor, 20 to 30 minutes. Remove with a slotted spoon and discard, reserving the stock.
Add the decorative tips to the stock and blanch until tender, 1 to 1 1/2 minutes. Remove with a strainer and refresh in an ice water bath. Drain on paper towels and reserve for the garnish. Reserve the stock.
In a medium stockpot, melt the butter over medium-high heat. When foamy, add the shallots and leeks and cook until tender, about 3 minutes. Add the garlic and cook until fragrant, about 1 minute. Add the chopped asparagus stalks, salt, and pepper, and cook, stirring, for 2 minutes. Add the reserved broth and simmer until the asparagus are very tender, 15 to 20 minutes. Remove from the heat.
With a hand-immersion blender or in batches in a food processor, puree the soup until smooth. Adjust the seasoning, to taste. If serving right away, return to medium heat and add the cream and reserved asparagus tips. Cook, stirring, until the soup is warmed through, about 3 minutes.
Alternatively, if serving the soup later, do not add the cream and let cool at room temperature (or in an ice water bath). Cover and refrigerate. Before serving, add the cream and asparagus tips, and warm the soup gently over medium heat, stirring occasionally.