The biggest difference is probably CUE is Turing Incomplete, which means no programming or functions. CUE is logical and proves that what you have written is valid and correct.
CUE is a superset of JSON, so all JSON is valid CUE.
The other main thing is the value lattice where everything from abstract types to concrete data lives.
I haven't actually used Dhall, the syntax rubs me the wrong way or something.