Flash is a (relitively) simplistic vector based animation program. Shockwave is a much larger and more complex system that's designed more for interactivity, such as games, which need bitmap based graphics, better scripting, ect. While Shockwave is more powerful, you'll see Flash used more often since it has enough scriptability and interactivity to get the job done when it comes to menus, Flash movies, ect.