I would prefer a simple approach. Expose the time for optional entry defaulting to the current time. For the time zone issue, either store the time zone in the file and expose it in the GUI or simply explain in the documentation that moving a data file to a different time zone has no effect on the date and time in previously entered transactions. Given that the next version of GnuCash might be multiuser, raising the possibility of multiple transactions entered at the same time from different time zones, the former approach might be the best.
I would prefer a simple approach. Expose the time for optional entry defaulting to the current time. For the time zone issue, either store the time zone in the file and expose it in the GUI or simply explain in the documentation that moving a data file to a different time zone has no effect on the date and time in previously entered transactions. Given that the next version of GnuCash might be multiuser, raising the possibility of multiple transactions entered at the same time from different time zones, the former approach might be the best.