It was never stated which Red Hair Pirate did it, but I think it has to be Shanks. Caribou was mocking Kid because he thought that some subordinate of BM cut off Kid’s arm, and then Kid corrected him about him losing it in a battle with the RHP. If it wasn’t Shanks himself who did it, then why would this correction make his reputation any better? In that case he would have just lost it to a subordinate of Shanks instead of a subordinate of BM. Plus Shanks has a sword, so that would explain how he cut of Kid’s arm