Definitely, with backend agnostic code you can target only a common set of features. It's convenient to use where it makes sense as it reduces the complexity: 1 kernel for all backends.
And you can actually go a long way with this without sacrificing too much of the performance.
But for squeezing maximum performance & using latest features you have to target each device individually.