You have a perfectly reasonable explanation for the childrens' names being different in each of their passports: the rules for names are different in each country. Each child has two passports that both legitimately identify that child, as can be seen from the photograph and from the fact (I assume) that the other data such as the date and place of birth match.
The tickets are booked in the Mauritanian names because their US I-94 record is tied to the Mauritanian passport. This is a perfectly reasonable thing to do because the US government does not perform direct checks of departing travelers, instead relying on airlines to transmit information about their passengers.
As I see it, you have two basic ways to approach this when you check in. You can either present the kids as Mauritanians, and then mention their dual nationality when the question of visas comes up, or you can present them as dual citizens when you arrive at the desk. Either option should work, but I'm not sure which will be more confusing to the clerk; it may depend on the individual. For example:
Option 1: When you arrive at the desk, present one passport per traveler, with the children's Mauritanian passports. This allows the agent to find the ticket, and it helps to ensure that the airline submits the Mauritanian passport data for matching with the I-94 database record. When the agent asks about visas for the Mauritanians, or starts flipping through passport pages looking for visas, inform the agent that the children are dual citizens and offer the Moroccan passports at that point.
Option 2: When you arrive at the desk, hand your passport to the agent, and say the kids are dual citizens. Then lay the children's passports on the counter in piles of two, one pile for each child, with the Mauritanian passport on top and the Moroccan one on the bottom. As you do this, explain that the tickets are booked on the Mauritanian passports because the US visas are in those passports. It should be unnecessary at this point to explain why the kids don't have Moroccan visas.
If I were you I wouldn't bring up the difference in names. Be prepared to answer questions about it, but there's no sense in complicating the matter prematurely if the agent doesn't notice or otherwise does not ask questions.
When you arrive in Morocco, present the kids' Moroccan passports at the entry immigration check, of course. There is, I suppose, a chance that the agent may try to find the kids on the passenger manifest, and that there might be a problem finding them because of the name difference. If that happens, show the Mauritanian passports. As far as I know, Morocco permits dual citizenship, so this should cause no problems.
If you fly from Morocco to the US, you should check the kids in with the Mauritanian passports, because of the US visas. But when you get to the immigration authority's exit check, show their Moroccan passports. Again, if there's any question about the name difference or about the passenger manifest, you can show the Mauritanian ones.