To a medium-sized non-stick skillet, add the chopped ham. Warm the pan over medium heat until the ham begins to sizzle. Reduce the heat slightly to medium-low and allow the fatty parts of the ham to render, about 20 minutes. Stir around the pan to prevent browning too soon. If necessary, add 1 teaspoon of unsalted butter to the hot pan to keep the ham moist and further reduce heat.
Once the fat is fully rendered from the ham, use a slotted spoon to remove the ham onto a paper towel to drain. Set aside.
Wipe out the skillet with a clean paper towel. Add the butter to the skillet over medium heat. Allow the butter to foam before adding the flour. Whisk together quickly, incorporating very well. Allow the roux to go from the pale yellow it will begin as, to a warm golden brown, whisking constantly, about 5 minutes. The roux should smell nutty and toasted. ProTip: if you have ham stock, add 1/4 cup to roux now and whisk until silky. Reduce cream in next step to 1 1/2 to 1 3/4 cups. Ham stock helps to achieve a rich depth of flavor not possible with cream alone.
SLOWLY begin adding the cream (or milk), whisking constantly. Mixture will thicken quickly. increase heat and whisk in additional cream (or milk) as needed until you reach the desired consistency you prefer. Remove from the heat. Whisk in cayenne, Worcestershire, and black pepper.
Replace the gravy to the heat over the lowest setting and stir in the ham burnt ends. Keep warm, whisking occasionally, while you prepare the eggs the way you like them. I am soft-scrambling here in the photos I show with 1 teaspoon of unsalted butter.