unfortunately delegation will be there when using SortByColumns with variables. You can try this:
running different sorting based on condition. Like keep the code on sorting buttons same. But change your gallery code to this:
If(varColumn="Name",
SortByColumns(
Filter([@'datasourcesharepointlist'], StartsWith(Title,SearchBox.Text)), "Name", If(SortDescending1, Descending, Ascending)),
if(varColumn="Availability",
SortByColumns(Filter([@'datasourcesharepointlist'], StartsWith(Title,SearchBox.Text)), "Availability", If(SortDescending1, Descending, Ascending))))
and so on.. So instead of usinf variable directly in sorting logic. You are running different sorting logics based on condition.