I can see easily how Isidoro's #3 is the same as #4. In principle, if you ****ume the capacity of link is between the highest and lowest amount, it works. However, as soon as it is insufficient even for the lowest amount… I will do some simulations and come back.
Hm... just to add something less subjective to discussion: time-based, serving oldest, equals fifo, which is by nature unsorted, except by its function & design, so it might win performance-wise (even over random?). Just append as it comes and it's already sorted as you want.
And it was interesting... at least showed we are as a community capable of polite disagreement! 
Well. The first simulation was helpful, but didn't cover all possibilities. I tested the "first largest amount" and "first smallest" variants, where all destinations with varying amount of p****engers are served by one line. I can't attach any resulting data, as they would be a great number of charts - these show how the amounts progress, and interpreting them is "human only" - which lines rise steadily (no serving), if the highest one changes etc.
I tried to simulate "corner cases" when the transport capacity is more or less as much as needed. Of course with too many or too few vehicles it degenerates to all waiting or all transported 
Smallest first leads to smaller serving of the fastest rising amounts, so there are a few destinations literally exploding, and the rest oscillates in negligible amounts, compared to these.
Largest first has exactly opposite effect - it equalizes amounts of waiting cargo, so the numbers visible in station are all the same. However, the smallest rising destinations never reach the top, and thus just rise with the rest, never transported.
I don't know what it means for the discussion...
MATLAB source:
¨% test for Simutrans - p****enger transport
cycles = 20; % how many periods
dests = 5; % how many destinations
freq = 10; % how many "ticks" between transport arrives
capacity = 80; % how much can the transport take
data = zeros(dests, cycles * freq); % preallocate the stats
increase_var = rand(dests, 1) * 10; % coefficient, how much psg to different destinations
data(:, 1) = round(increase_var); % fill first row
for i = 2 : cycles * freq
data(:, i) = data(:, i - 1) + round(rand(dests, 1) .* increase_var); % add more random psg
if mod(i, freq) == 0 % transport has arrived
remaining = capacity;
j = dests;
tmp = data(:, i);
[foo, ind] = sort(tmp, 'descend'); % see below:
% 'descend' -> smallest amount first (j iterating backwards!)
% 'ascend' -> highest amount first
% foo is redundant, only indexes are important
while (remaining > 0) && (j > 0) % until vehicle full or station emptied completely
k = ind(j); % true index in main data (and tmp, too)
if tmp(k) >= remaining
amt = remaining;
else
amt = tmp(k);
end;
data(k, i)= data(k, i) - amt;
remaining = remaining - amt;
j = j - 1;
end;
end;
end;
plot(data'); % oops, wrong direction of matrix... rotate
Next simulation... ****ign destinations distances and sort according to them.
EDIT: Hehe, no interesting results from this. Only that the last served stations have best chance to get crowded, which we knew before 
Maybe here the simulation should be different, more competing lines?