The book made the mistake of confusing typing mechanics with scope mechanics.
A Value type is not a reference type. It's data is copied when you call a method using it as an argument (without ref or out).
Value types will live on the stack in the scope of a method, rather than on the heap as a reference object does, but that doesn't mean it will always live on the stack.
So, the book is making a usage statement in lieu of a mechanics statement, and confusing the two. It's not a total baseless claim, but it's wrong.
Value types will be held wherever their owner is.
So if their scope is a method, they'll be on the stack. If their scope is an object, they'll live with the object on the heap.
With that, it's pretty safe to say, a value-type is best left as an immutable, since most people have a hard time predicting the value-type mechanics of by-value.