Given two datasets: d1 and d2 having the same features but differently ordered StructType, a slightly non-intrusive way might be to cast the data features into the same type (as mentioned by @lewtun)
d1 = d1.cast(d2.features)
d3 = datasets.concatenate_datasets([d1, d2])