Yes, you could manually move the data as well as model copies to multiple devices and execute them in parallel directly. While the first approach could also run workloads in parallel, it depends on the actual workload as mentioned before.
I wouldn’t assume to see overlapping kernel execution when e.g. cublas matmul kernels are executed, as they tend to allocate all compute resources of the device so that other kernels would have to wait.