It should be prevented when it gives you a wrong answer and should not be prevented when it doesn't. Whether a phantom read is a problem or not depends solely on your application. Many applications are organized such that phantom reads don't happen to occur; to get a phantom read, you have to operate (read/update/etc.) over the same data twice, which is often not efficient.
Clowns were never meant to be THAT big! We must destroy it with this tiny ad:
SKIP - a book about connecting industrious people with elderly land owners