set
is a shell builtin, while env
is a program (/usr/bin/env)
set
does several things, but by itself it lists the environment variables. It can also set/toggle switches, such as set +x
or set -v
etc.
env
by itself lists the exported environment variables, but can run a program in a modified environment
See man 1 env
for more information.