Что-то я такое смутно помню, что у pf обработка правил идёт в порядке их следования в конфиге. Поэтому сначала делается NAT, а потом уже применяются правила блокировки/разрешения. И поэтому правило
pass out on $ext_if from $ext_if to any keep state
разрешает всем и всё, так как после NAT'a все пакеты, которые через NAT прошли, будут под это правило подпадать.