Спасибо за совет, разобрался.
Код:
ORDER BY A.DATAAREAID,A.Field2,A.Field3,A.Field4,B.DATAAREAID DESC,B.ZIPCODEID DESC
Это происходит из-за того, что в свойствах Index основной таблицы был указан индекс, по которому происходила сортировка по умолчанию - я этого сразу не заметил.
Странно вообще-то, я бы ожидал, что для пользователя результат изменения сортировки вручную должен быть предсказуемым. В конце концов, если он кликает на хедер поля основной таблицы, порядок записей изменяется верно, а то, что ZipCodeId берется из другой таблицы, пользователя интересует меньше всего.
Насколько я понимаю, идеального решения у этой проблемы нет. Я собираюсь перенести сортировку по умолчанию из свойства Index в метод датасорса init(), но так-как при этом сортировка в двух таблицах так и останется независимой друг от друга, в некоторых случаях пользователям придется менять ее в форме Filter Records > Sorting.