It depends on which version(s) of Emacs you are using (or targeting). Iff you are exclusively using Emacs 24+ then you can safely use variant A:
* Incompatible Lisp Changes in Emacs 24.1
** Passing a nil argument to a minor mode function call now ENABLES
the minor mode unconditionally. This is so that you can write e.g.
(add-hook 'text-mode-hook 'foo-mode)
to enable foo-mode in Text mode buffers, removing the need for
`turn-on-foo-mode' style functions. This affects all mode commands
defined by `define-minor-mode'. If called interactively, the mode
command still toggles the minor mode.
That's from the NEWS file, but as per the comments it's good practice to use function-quoting for function symbols, like so:
(add-hook 'text-mode-hook #'foo-mode)
If the code might need to run under Emacs 23 (or earlier), then I would go with variant C, as personally I dislike seeing anonymous functions in hook variables. (I'm not sure I understand what you mean by variants D & E, mind).