The Array exporter currently uses buffer->data(), which is documented as "The buffer has to be a CPU buffer (is_cpu() is true). Otherwise, an assertion may be thrown or a null pointer may be returned.".
In practice, we indeed return null for non-CPU data. There is only a debug check that asserts the device.