The problem, of course, is that the Steam Controller's D-Pad isn't actually a D-Pad (with 9 possible input states), it's a touchpad (with two continuous axes). The hid-steam driver implies this by indicating that ABS_HAT0X/Y have a range of -32767 .. 32767, but SDL seems to ignore that and treat it like a regular hat, where Y < 0 => UP, X > 0 => RIGHT, etc.
This in turn makes the D-Pad all but unusable via SDL: it is impossible to touch the pad perfectly centered on either axis, so in practice SDL will only ever report the hat to be in the corners; trying to touch "UP" will waver between UP-LEFT and UP-RIGHT depending whether your finger is just barely left or right of center on the touchpad.
I'm in the midst of trying to find a solution to this problem (which arose for me in the context of RetroPie's version of EmulationStation) but haven't found the right place to address it yet. There may be an environment variable or some other way to make SDL handle this input correctly, or it may require a patch to notice that (for example) the "hat" input range is far wider than -1 / 0 / 1 and to just expose it as an axis instead.
(I've raised this issue with SDL, so hopefully this will be fixed in a future release.)