The best compromise seems to be to tack on the local time zone at this point. If the user wants something else, then they will have to construct a time with the correct time zone from the under-specified time. This is analogous to mixing calculations with integers and floating point numbers. If your calculations deal strictly with integers, then the result is an integer, but the moment you insert a float into the calculation, the result is a float. The same applies to times without time zones.
Calculations involving times without time zones generate a result without a time zone.
Calculations that mix data with and without time zones generate a time with a time zone. When a time is promoted to contain a time zone, the local time zone is used.