Per Grails addTo documentation,
In addition, calling addTo* initializes the associated collections, and sets the back-reference of the author property in each Book.
addTo explicitly adds the association in the collection and the back reference. In your example, you are only adding the back-reference, but never the association in the collection. Basically cascading association is only perform from owner to dependent. If you think about this it makes sense because what happens if you have something like the following:
class Author {
static hasMany = [fictionBooks: Book, nonFictionBooks: Book]
}
then which collection should your new Book(author: author).save()
save to?