What about defining mapslices(::AbstractGPUArray, ...) using the GPUArrays.AbstractGPUArray type from GPUArrays.jl inside a package extension QuantumToolboxGPUArraysExt? That function can then be implemented using KernelAbstractions.jl. AbstractGPUArray is a supertype of the various GPU array types in the Julia ecosystem.
If you load a package like CUDA.jl, Metal.jl, etc. they depend on GPUArrays.jl so the QuantumToolboxGPUArraysExt will get loaded and then you can call mapslices(::AbstractGPUArray, ...) on the appropriate GPU array type, i.e. CuArray, MtlArray, etc.
(Obviously overloading Base.mapslices(::AbstractGPUArray, ...) would be type piracy so you should probably define your own QuantumToolbox.mapslices(a::AbstractArray, ...) = Base.mapslices(a, ...) and then overload QuantumToolbox.mapslices(::AbstractGPUArray, ...) in QuantumToolboxGPUArraysExt.)