Step 1
In a medium bowl, combine the tomatoes, onion, garlic, cilantro, and jalapeño (if using) to make the salsa.
Step 2
In a small bowl, whisk together the mayonnaise and sour cream. Season with lime juice, salt, pepper, and chipotle (if using), then set aside.
Step 3
In another medium bowl, mix the flour, chili powder, and 1½ teaspoons each of kosher salt and black pepper. Pour the milk into a separate bowl and soak the fish in it.
Step 4
Heat ¼ cup peanut oil in a 12-inch frying pan over medium-high until shimmering. Remove fish from the milk, dredge lightly in the flour mixture, and shake off any excess. Add a few pieces of fish at a time, without crowding. Cook until golden brown on one side, 3 to 4 minutes, then flip and cook 1 minute more. Transfer to a paper towel–lined plate and sprinkle with salt. Repeat with remaining fish.
Step 5
While the fish cooks, lightly oil a skillet and warm the tortillas over medium heat until soft and hot. Keep them wrapped in a clean dish towel.
Step 6
To assemble, place 3 pieces of fish (browned side up) on each tortilla. Top with salsa and a pinch of cabbage, then drizzle with the cream sauce. Serve 2 to 3 tacos per person with lime wedges and hot sauce on the side.