Global datasets are shared across all simulator instances during a test execution whereas, local datasets are created one per simulator.
One of my most frequent uses of global datasets occurs during performance testing scenarios where I need a test case to simulate several hundred concurrent vUsers. Specifying the dataset as global enables me to identify whether or not a row of data can be re-used by more than one simulator. In many cases, I want the row to be "burned" and not reused once a test case has executed. Specifying the dataset as local would not allow this scenario because each test case would have its own local copy of the data.