Difference between ToolSettings struct and operator properties?

Hi.
There seem to be two ways of adding options/settings to an operator in Blender: the ToolSettings struct and operator properties (wmOperatorType::srna). The use of both seems to be mixed, and they seem to be used almost interchangeably.
Is use of one preferred over the other? Do they have different use cases?