exportexporta para filhos do processo atual; por padrão, eles não são exportados. Por exemplo:
$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'
$ export foo
$ bash -c 'echo "$foo"'
bar
set, por outro lado, define os atributos do shell, por exemplo, os parâmetros posicionais.
$ set foo=baz
$ echo "$1"
foo=baz
Observe que baznão está atribuído a foo, ele simplesmente se torna um parâmetro posicional literal. Existem muitas outras coisas que setpodem ser feitas (principalmente opções de shell), veja help set.
Quanto à impressão, exportchamada sem argumentos imprime todas as variáveis no ambiente do shell. settambém imprime variáveis que não são exportadas. Também pode exportar alguns outros objetos (embora você deva observar que isso não é portátil), consulte help export.