Потому что руби при создании объекта не копирует данные класса, а хранит ссылку на него. TYPES это константа класса, при ее изменении данные обновятся у всех объектов. В случае обычного класса Вам нужно было бы переопределить метод initialize с установкой нужной переменной, но для модели это делать не жлательно и лучше воспользоваться колбеком.
Кроме того присваивание работает по ссылке, поэтому массив нужно именно скопировать
class Book < ActiveRecord::Base
DEFAULT_TYPES = ['Classics', 'Fantasy']
after_initialize :set_default_book_types
def book_types
@book_types
end
def set_default_book_types
@book_types = DEFAULT_TYPES.map(&:clone)
end
end