a fair point. it doesn't. that's just how nickm did it in the fix for bug 440, and it's close enough to right.
entry needs weighting always because you'll reuse the guard you pick for other circuits, most of which will want you to have picked it weighted by bandwidth.
the only exception i guess might be if useentryguards is 0, in which case you won't be reusing it.
the question comes down to what people who set useentryguards 0 expect. we keep finding these edge cases where we're not sure what behavior we should provide for an option that ordinary people shouldn't touch.
for torperf, which is the only actual use case i know of, we want it to imitate what a real client would do.
and torperf doesn't run a hidden service, so it doesn't matter there