Basically, the temporary tables the datareader user is creating is created on tempDB database. By default, any user can create objects in tempdb database, unless explicitly denied.
Refer to tempdb permissions reference
Any user can create temporary objects in tempdb. Users can access only
their own objects, unless they receive additional permissions. It's
possible to revoke the connect permission to tempdb to prevent a user
from using tempdb. We don't recommend it because some routine
operations require the use of tempdb.
For example, in the below sql code, I am creating a user , which is just having public
role. It is also able to create temporary tables. public
database role is given by default, when you add a user for a login in a database. Read more about public role
use master
go
create database testperm
go
create login testpermlogin with password = 'Somecomplexpassword123#'
go
use testperm
go
create user testpermuser for login testpermlogin
go
execute as user ='testpermuser'
go
select USER_NAME()
go
create table #test(a int)
go