BigDecimal, assim como String e os “wrappers” (java.lang.Integer etc.), é uma classe “imutável”, ou seja, você não pode modificar o valor de um objeto BigDecimal; apenas o valor de uma variável, atribuindo um novo objeto.
Exemplos:
String s = "joão";
s.toUppercase();
System.out.println (s); // imprime "joão", não "JOÃO"
s = s.toUppercase();
System.out.println (s); // imprime "JOÃO"
BigDecimal bd = new BigDecimal ("1.23");
bd.add (new BigDecimal ("4.56"));
System.out.println (bd); // imprime "1.23", não "5.79"
bd = bd.add (new BigDecimal ("4.56"));
System.out.println (bd); // imprime "5.79"