Preserving timezones explicitly in postgres
My use case is a simple end-user-facing application accessed from only folks in the 'Europe/Berlin' timezone. [...]
My intuition is now to store the time as a timestamp without time zone because [...]
Later I wouldn't be able to refer to the actual timezone that post was published in.

That indicates a misunderstanding stemming from the unfortunate data type names:

timestamp without time zone (= timestamp)
timestamp with time zone ( = timestamptz)

Neither data type stores any time zone information whatsoever. timestamptz just adds input and output logic to take the timezone setting of the current session into account, and projects from / to UTC time accordingly.
Don't be too embarrassed if that had you confused, it has happened to the best of us:

Time zone storage in data type “timestamp with time zone”

In your particular case
If your statement is reliable:

accessed from only folks in the 'Europe/Berlin' timezone.

... then you might as well just use timestamp. You know the accompanying time zone. And there is no conversion between input and output. You can convert to timestamptz on the fly with:
my_column AT TIME ZONE 'Europe/Berlin'

If your app should outgrow it's current scope and you need to switch to timestamptz to easily facilitate input from multiple time zones, convert with:
ALTER TABLE tbl ALTER col TYPE timestamptz
   USING my_column AT TIME ZONE 'Europe/Berlin'

Be sure to use the time zone name 'Europe/Berlin', not a hard-coded offset that would fail to adjust for DST variations, nor time zone abbreviation, which is just a name for a hard-coded offset - another one of those very common misunderstandings.
Or use timestmaptz right away to cover all eventualities.
Either way, to preserve timezones like you asked, you then need to store them explicitly (in an additional column), as that is not saved otherwise - and you can no longer just assume 'Europe/Berlin'.
Related:

Ignoring time zones altogether in Rails and PostgreSQL
Oddities with AT TIME ZONE and UTC offsets
Why does PostgreSQL interpret numeric UTC offset as POSIX and not ISO-8601?