I think the wording in the book is correct. The methods that require Self: Sized cannot be called on the trait object, but the trait is still object-safe.
trait Trait {
fn a(&self) {} // ok
//fn b<T>(&self, T) {} // not ok, uses type parameter
//fn c(&self, Self) {} // not ok, uses Self
fn d<T>(&self, T) where Self: Sized {} // ok, uses type parameter but Self: Sized
fn e(&self, Self) where Self: Sized {} // ok, uses Self but Self: Sized
}
struct Test;
impl Trait for Test {}
fn main() {
let x: &Trait = &Test;
x.a();
//x.d(0); // cannot be called because Trait is not Sized
}