The trigger was only firing one time for each batch of 200 and assigning the value to all records in the batch. Using maps I was able to assign the correct value to all records in my database.
trigger Populate_Transfer_Manager on Account (before insert, before Update) {
list<id> aid = new list<id>();
for(account a: trigger.new){
aid.add(a.ownerid);
}
map<id, user> users = new map<id, user>(
[select managerid from user where id in: aid]);
for(account a: trigger.new){
a.Transfer_Manager__c = users.get(a.ownerid).managerid;
}
}