efele.net/tz have done a wonderful job curating world timezones. However the maps used only include land. Harbours, coastal waters, and large lakes are considered international waters.
I've expanded on the tz_world_mp to include territorial waters of 22.224km. When timezones overlap, the closest landmass is used.
The closest landmass was calculated using QGIS by simplifying the original multipolygons, converting to points, and then calculating a Voronoi diagram. Simplification was required because of processing limitations. The original multipolygons were buffered using PostGIS to 22.224km and simplified as accuracy in the ocean was not a concern of mine. PostGIS was significantly faster than QGIS for the buffering process. I intersected and dissolved the results to create a map with the original land borders and simplified coast including territorial waters. The process has significantly simplified the coastal shapes reducing the shape files from 35.8MB to 14.5MB without affecting land borders.
Simplifying the original multipolygon prior to converting to points and processing a Voronoi diagram lead to some unfortunate artifacts around complex areas.