Yes the two are very different.
tensor.cuda() is out of place: tensor itself is not modified.
The operation on Tensor (like all ops on Tensors) is differentiable.
net.cuda() is inplace! It changes the nn.Module and the returned value is the same as net.
The operation is not differentiable, you can see it as doing:
# In pseudo code (this won't work with nested nn.Module
with torch.no_grad():
    for name, param in net.named_parameters():
        net.name = param.cuda()