Hola Yago, bienvenido al foro.
Cuando haces
Datasource.Free, en realidad lo que estás haciendo es destruir la instancia del DataSource, es decir, la estas liberando de la memoria y no podrás referenciarla más adelante, ¿Ese es el comportamiento que esperas?.
De acuerdo con lo que yo entiendo, lo que quieres es asociar diferentes Datasource a un DBGrid, en el caso en que quieras dejar el DBGrid sin asociación a un Datasource utiliza lo siguiente:
Código Delphi
[-]
DBGrdTablas.DataSource:=nil;
Espero haber entendido tu problema.
Saludos