Lets say for example, a thread is creating and populating the reference variable of an immutable class by creating its object and another thread kicks in before the first on
Two threads will not be creating the same object, so no problem there.
With regards to 'it may be necessary to ensure...', what they are saying is that if you DON'T make all fields final, you will have to ensure correct behavior yourself.