1.There are no "benefits" - I guess it's only an option when you've got the definition, but not the sample. E.g. database object have not been created yet, or are not yet accessible, yet you're starting development already.
2.But the only useful scenario I know is editing - it's far quicker to edit source than import the source if you need to change just length or naming of one column.
3.IMPORTANT NOTE: Source definitions are never connected to any single source instance. This is to represent a structure that will be accessed in future without pointing to any specific table, database, or even server.