Puedes usar un campo añadido en el SELECT para diferenciarlos, algo así:
Código SQL
[-]select c.id, c.telefono, c.dreccion, 'clientes' FROM contacto_clientes
UNION ALL
select a.id, a.telefono, a.direccion, 'amigos' FROM contacto_amigos
preparas el DBGrid para que no se vea esa columna y luego con un simple if como este sabrás si el registro es de una tabla o de otra:
Código Delphi
[-]if DBGrid1.Fields[3].AsString = 'clientes' then
else