It depends on what you want to do, I think. For snorkeling, I'd say Sapphire or Coki. With kids, Coki or Magens Bay. Coki Beach has Coral World right next door, which is fun for the kids. I don't think Morningstar Beach is particularly special, except for the fact that it's the closest to the cruise ship pier.
There are also some good beaches on St. John: Cinnamon Bay (my favorite), Maho Bay, and Trunk Bay are generally considered to be the best. Trunk Bay is probably the nicest, but is usually very crowded, especially if there are a bunch of ships in port that day.