First, forget briefly about the Hilbert curve and just think about the unit square [0,1]^2.
If you take any point (x,y) in the unit square, we can associate x and y with binary coordinates, say x = 0.a1a2a3... and y = 0.b1b2b3... Then we can just define a new number z with binary representation 0.a1b1a2b2a3b3... And going the other way, given z in [0,1], we can take the 'even' binary coordinates to get x, and the 'odd' binary digits to get y.
The problem with this specific mapping is that the function is not continuous. But if you are a bit more careful:
1. The first digit says "left half vs right half"
2. The second digit says "top half vs bottom half" (of the rectangle from 1)
3. The third digit says "left half vs right half" (of the square from 2)
etc.
and then if two numbers share the first n binary digits (i.e. your points are close on the real line) then the corresponding points in the plane will also be quite close together (they are inside the same square / rectangle with side length like 2^(-n/2) at step n).
The "reason" why the dimension is different is precisely because of the "n/2": for every n digits of precision you have in the number z, you only get n/2 digits of precision for each of (x, y).
This is a bit imprecise because of issues with non-unique binary representation but (at least for me) it captures the spirit of why this should work!