Not every use case needs to see a new instance at any precise moment. Consider the textbook example: lazily-initialized singletons which are cheaper to re-initialize in each thread than to share safely. In such a case you may unsafely share an immutable instance and each thread which doesn't manage to receive the already existent copy will just create its own.
As for terminology: unsafe publication means that it happens under a data race. Safe publication is the opposite case.
BTW java.lang.String
is an example of an effectively immutable object which can nevertheless be shared unsafely.