Today Google Transit interprets end_time as the latest time a vehicle
may leave the first stop. Once a vehicle starts a trip it will run to
the end. For example, if the trip1 has these stop_times rows
stop_0, 0
stop_1, time_1
stop_2, time_2
and has a frequencies.txt entry than the last arrival at stop_2 will
happen at end_time + time_2
frequencies.txt is the part of the specification with the weakest
definition. The intention is to represent schedules that don't have a
fixed list of stop_times. We could provide a probabilistic definition
such as headway_secs / 2 is the expected wait time at all stops on the
trip between start_time and end_time. Of course it is impossible for
the wait time to simultaneously change at all stops so perhaps the
definition should say that the expected wait time at stop_i changes at
end_time + time_i, which is even more complicated to understand.
Routing using trips defined probabilistically is something we aren't
doing yet. We don't want things in the spec until they are proven
useful with real data and software. Look at the GTFS Changes group to
see the process in action.
Short answer: If you know exact times use stop_times. If you don't use
frequencies.txt. Feel free to use Google Transit's interpretation of
frequencies.txt. If you have data and software demonstrating another
useful interpretation of frequencies.txt please suggest it to GTFS
changes. There is certainly room for improvement.