The dd command has a conv=sparse
sparse try to seek rather than write the output for NUL input blocks
So I would attempt
xz -dc < image.xz | dd of=image conv=sparse
Using dd in this way will work with any form of input (whether or not the first command could generate sparse files itself).
Citing the xz manpage (which you really should consult with such questions), in which I very quickly searched for sparse:
Disable creation of sparse files. By default, if decompressing into a regular file, xz tries to make the file sparse if the decompressed data contains long sequences of binary zeros. It also works when writing to standard ...