Reclaim disk space from dropped column without downtime
ALTER TABLE .. DROP COLUMN ... marks the column as deleted in the system table pg_attribute. The table itself is not otherwise manipulated until rows are rewritten some way or another. The drop itself is very fast, but it does take a brief ACCESS EXCLUSIVE lock. I would not call that &quot;downtime&quot;, though.
Actually reclaiming disk space is the tricky part. You could use
the community tool pg_repack instead of VACUUM FULL or CLUSTER (which lock the table exclusively). It avoids exclusive locks, but it needs free space on disk to operate. More details:

VACUUM returning disk space to operating system

Or, if rows in your table are updated eventually, you can just wait it out. Every new row version is written with the dropped column set to NULL. When the old row version is overwritten or removed by VACUUM you basically regain the space. Some corner case exceptions apply, though. See:

Dropping column in Postgres on a large dataset