I toss the shrimp with minced garlic, smoked paprika, salt, and pepper in a bowl so every piece gets coated evenly. Then I heat olive oil in a skillet over medium heat and add the shrimp in a single layer. It only takes about two minutes per side until the shrimp turns pink and slightly golden at the edges.
Once the shrimp is cooked through, I pull it off the heat and let it rest for a couple of minutes so it's not piping hot. Then I chop it into small, bite-sized pieces. This step matters because hot shrimp can make the avocado mixture watery if you skip the cooling time.
I slice each avocado in half and remove the pit, then run a knife gently through the flesh while it's still in the skin to score it. Using a spoon, I scoop the cubed avocado into a mixing bowl and set the empty shells aside since they become the serving bowls.
In the same bowl as the avocado, I add the chopped shrimp, diced tomato, and onion if I'm using it. In a separate small bowl, I whisk together the mayo, sour cream, cilantro, and lemon juice until smooth, then pour that dressing over the shrimp and avocado mixture and fold gently so the avocado chunks stay mostly intact.
I spoon the creamy shrimp mixture back into the avocado shells, mounding it slightly so every bite gets a good mix of shrimp, avocado, and dressing. I serve it right away while the shrimp is still slightly warm against the cool avocado.