The issue occurs also for float tensors. Despite the fact that requires_grad flag is retained. Proof:
import torch

device = torch.device("cuda")
x = torch.randn(5, 3, requires_grad=True).to(device)
x.sum().backward()
print(x.grad, x.requires_grad)  # (None, True)