Use regular expressions and back-references to their fullest, and do not use a RewriteCond to test REQUEST_URI if the RewriteRule pattern can be used to do so; RewriteConds are not processed at all unless the RewriteRule pattern matches (see mod_rewrite documentation), so efficiency is much better if you use the most-specific RewriteRule pattern possible.
Because it appears that this code is going into a server config file (as opposed to .htaccess), the first seven rules can likely be reduced to something like this:
RewriteRule ^b2/([a-z]{2})([A-Z]{2})/client-([a-z]+)$ http://${lowercase:$2}.example.com/be2/$1-${lowercase:$2}/data/$3.xml [R=301,L]
However, this will redirect all possible language codes, and all possible "page names," and so may be too "accepting" for your needs.
An alternative to the "accept-anything" approach would be to list the alternatives that are acceptable, such as (enUS|esMX|esAR|ptBR) and (homepage|news). Note that the first pattern will then have to be processed further by a RewriteCond to lowercase your pesky uppercase country-codes, and the back-references will need to be adjusted. Something like:
RewriteMap lowercase int:tolower
#
RewriteCond ${lowercase:$1} ^([a-z]{2})([a-z]{2})$
RewriteRule ^/b2/(enUS|esMX|esAR|ptBR)/client-(homepage|news)$ http://%1.example.com/be2/%1-%2/data/$2.xml [R=301,L]
Note that RewriteMap is only required once for each map, no matter how many times you need to invoke that map.
Note also that one advantage of this approach is that it eliminates the multiple calls to the RewriteMap. However, it's still a bit wasteful, in that we know that the first two characters processed by the RewriteCond will already be lowercase. However, avoiding this would require an additional RewriteCond. Everything's a trade-off...
This still may not be selective enough for you, but I trust that the above will demonstrate some useful techniques.
Jim