Software decoding is generally more customizable and better quality, also better stability depending on the circumstances.
I don't usually use hardware decoders because there are restrictions, such as what renderers can be used or what and where filters can be placed in the decoding and rendering pipeline.
Hardware decoding is great when power (be it electrical or processing) is limited, but if you really want to have all the knobs available software decoding is what you want.