Как сделать класс управления записями?
второй более норм, но есть моменты:
1. это репозиторий, класс который сохраняет сущности в хранилище
поэтому
BookRepository 
2. create update сделать приватными и можно заменить на save
public function save(Model $model): void{
   if($model->getId()>0){
      $this->update($model);
   }
   else{
     $this->create($model);
   }
}
3. public function initDatabase(PDO $db) - это контруктор
public function __construct(PDO $db)
4. public function get(Book $book) - что это? public function findById($id): ?Book  - более правильно
5.  public function getAll() - правильных ход, но если 1млн записей, все вытащите? нужна критерия выборки и коллекция на выходе а не массив
 public function getAll(Criteria $criteria): BookCollection

п.с вообще то если ООП то у вас Book должна быть богатой моделью предметной области в данном случае это Rich Model  где поведение модели размазано по слоям
Вопрос, как всегда,  совсем не о том. 

Код этих двух "классов управления записями" по сути ведь не отличается друг от друга. Отличается только формат этих записей, в котором класс выдаёт результат работы - либо массив, либо объект.

То есть вопрос на самом деле - в каком формате работать с книгами в коде - в виде массивов или объектов, а не как ими управлять. 

И ответ на него очевиден - поскольку в объект можно вкрячить кучу функционала, например метод validateISBN(), то однозначно работать с объектами удобнее.