Prepare the salsa: In a medium bowl, mix together the tomatoes, onion, garlic, cilantro, and jalapeño (if using).
Make the sauce: In a small bowl, whisk the mayonnaise and sour cream. Squeeze the juice from the halved lime and stir in salt, pepper, and chipotle (if desired). Adjust seasoning to taste.
Season the fish: In a shallow bowl, combine flour, chili powder, and 1½ teaspoons each of kosher salt and black pepper. Pour milk into another bowl. Dip fish strips into the milk, then dredge lightly in the flour mixture.
Cook the fish: Heat ¼ cup peanut oil in a 12-inch frying pan over medium-high heat until shimmering. Add butter for flavor. Fry fish in batches, about 3–4 minutes on the first side until golden brown, then flip for 1 minute. Drain on paper towels and sprinkle with a pinch of salt.
Warm the tortillas: Heat a lightly greased skillet over medium heat and warm tortillas one or two at a time. Keep them wrapped in a towel to retain heat.
Assemble the tacos: Fill each tortilla with 3 strips of fried fish, a scoop of salsa, a pinch of cabbage, and a drizzle of lime sauce. Serve with lime wedges and hot sauce on the side.