For the GNU Coreutils implementation, there is a difference depending on whether an explicit TEMPLATE is provided on the command line or not. As per the man page:
SYNOPSIS
mktemp [OPTION]... [TEMPLATE]
If TEMPLATE is not specified, use `tmp.XXXXXXXXXX`, and `--tmpdir` is implied.
(note the --tmpdir is implied); where
-p DIR, --tmpdir[=DIR]
interpret TEMPLATE relative to DIR; if DIR is not specified, use $TMPDIR
if set, else /tmp.
So
$ mktemp foo.XXX
foo.eWT
uses the current directory, whereas plain
$ mktemp
/tmp/tmp.hrY7qNWWty
defaults to /tmp (since --tmpdir is implied, but no $TMPDIR set).