What does a Cube LUT offer over a PNG HALD?
They're essentially the same thing with different storage layouts.  A 2D LUT is just slices of a 3D LUT laid out in an image.  People use formats like Cube becasue that's what the software supports.  Because formats like Cube were invented before hardware acceleration it was probably just easier to load data already stored as 3D because the color transform was all done on CPU anyway.  You need extra math to transform an RGB value in 2D space instead of just a 3D array lookup: LUT[R][G][B] plus you have to interpolate between 3D points of your LUT is smnaller than your color space.  The file size difference is mostly due to cube files being ascii not binary.  

LUTs are also used extensively in Game development to apply looks in realtime using the GPU.  Here LUTs can be stored as 3D (volume) images.  An advantage to 3D image storage is you can take advantage of hardware pixel interpolation in 3D.  I suspect any video editing/compositing/coloring software with hardware acceleration would transcode Cube/Hald LUTs to 3D images for the actual lookup on the GPU.

Look here for info on hardware color conversion.