A expressão
name between 'A' and 'B'
é equivalente a
name>='A' and name<='B'
Então 'Argentina' é>='A' e <='B' e satisfaz a condição. Mas 'Bolívia' NÃO é <='B'. 'Bolívia'>'B'. Ele não olha apenas para a primeira letra:ele olha para a string inteira. O que certamente é como deveria ser:se não fizesse isso, não haveria como dizer que você queria um intervalo que incluísse 'Smith', mas não 'Smithers'.
Para realizar o que você quer, você poderia dizer:
substr(name,1,1) between 'A' and 'B'
ou:
name like 'A%' or name like 'B%'
ou:
name>='A' and name<'C'