At v3.16.0, a passing an xarray.DataAarray object in as the array of a cf.Data object works, insofar as it doesn't fail. However, because the xarray object claims (or might claim) to be a Dask collection (i.e. dask.base.is_dask_collection(<xarray.DataArray>) is True), the xarray object could be stored internally in place of the expected Dask array.
The solution is to test for a xarray.Datarray inputs and convert it to a Dask array as appropriate.
Dask has some prior art on this, e.g. https://github.com/dask/dask/blob/2023.12.1/dask/array/core.py#L4569-L4570