I usually use ng-disable on myArray.length to get a 0 or !0 and use it as false and true. Always worked for me.
<select ng-model="model.a"
ng-options="value for a in array"
ng-disabled="!array.length">
</select>
What about in your exemple :
<ui-select
id="Models"
ng-model="request.model"
ng-disabled="!request.make.length">
<ui-select-match placeholder="Enter a Model…">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="choice in request.make.models | filter: $select.search">
<div ng-bind-html="choice.name | highlight: $select.search"></div>
</ui-select-choices>
In your current code request.make would return [] and not 'false' ... if I understood well.