Just to add a bit to the other answers. Perhaps the most important consideration to ask yourself is for whom you are writing this command or environment? Both commands and environments hide the complexity of the TeX language from the user and should provide markup that should optimize for minimizing human1 memory and maximizing readability. So if there are no technical reasons is a matter of
user interface.
Consider a simple example where the user is to provide a list of symbols and we will
provide a command or environment to typeset them with the first one that comes in mind being a tabular.

For myself I would prefer this:
\printlist{\alpha,\beta,\gamma,\zeta,
\eta,\theta,\epsilon}
If I would have expected the user to type fifty or more symbols an environment might lead to less human errors and improve readability.
\begin{symbols}
\dosymbol{\alpha}
\dosymbol{\beta}
\dosymbol{\gamma}
\dosymbol{\zeta}
\end{symbols}
Maybe? Take your pick using the MWE below:
\documentclass{book}
\usepackage{textcomp}
\makeatletter
%\def\symbols{\flushleft} %alternative way to define
%\def\endsymbols{\endflushleft} %the environment
\newenvironment{symbols}{\flushleft}{\endflushleft}
\def\dosymbol#1{%
\leavevmode\hbox to .33\textwidth{%
\hbox to 1.2em%
{\hss$#1$\hfil}%
\footnotesize\texttt{\string#1}\hss}%
\penalty10}
\parindent0pt
\begin{document}
\begin{symbols}
\dosymbol{\alpha}
\dosymbol{\beta}
\dosymbol{\gamma}
\dosymbol{\zeta}
\end{symbols}
\def\listsymbols#1{%
\@for\next:=#1\do{%
\expandafter\dosymbol\next%
}}
\long\def\printlist#1{%
\def\alist{#1}
\flushleft
\listsymbols\alist
\endflushleft
}
\printlist{\alpha,\beta,\gamma,\zeta,
\eta,\theta,\epsilon}
\end{document}
1 Some TeX Programmers have also a human memory.
\begin{reset}....\end{reset}with\resetpage{....}with the environment body changed to an argument. You are comparing to a no-argument form\resetpagein which the scope is implicitly the current environment or group. – David Carlisle Mar 12 '13 at 16:49\resetpagedid something, whereas the environment would provide the same thing. In this case where the provided thing could be performed very explicitly by adocommand, I would prefer this. Of course when changing the full layout of the residing text in the environment, (tables), an environment is obviously the best thing. – nickpapior Mar 12 '13 at 16:58longtableaslongtable#1. :) – nickpapior Mar 12 '13 at 17:13