The form
\newcommand*{\dosomething}[1]{\textbf{#1}}
is slightly slower than
\newcommand*{\dosomething}{\textbf}
because with the first form the argument is read in just to be fed again to \textbf.
On the other hand, the first form is much clearer, because it shows the intended meaning. It's also better if you plan to modify it later on, but this is not really relevant.
When TeX finds a macro, it knows how many arguments it's defined with, so it looks for them and proceeds to replace the tokens with the macro's replacement text.
So, with the second form, \dosomething{xyz} would make TeX replace \dosomething with \textbf and go on, finding the argument to \textbf.
With the first form, \dosomething{xyz} will be replaced by \textbf{xyz} and TeX would look again for the argument of \textbf; this explains why the first form is slower (a few nanoseconds, perhaps).
Note that the third form is incorrect, because \endgroup would be fed as the argument to \textbf, which is not a desirable thing to do.
Going to the facetious side, using the second form is a sign of being either a macho or a cargo cult LaTeX programmer. What category, the rest of the code will tell.
Another possibility is available, but it has several disadvantages:
\let\dosomething\textbf
Problem 1. It's not documented in the LaTeX manual and, differently from \newcommand, it doesn't check whether \dosomething already has a definition.
Problem 2. If you change the meaning of \textbf (say that your inhouse style requires that boldface should always be upright), then it would matter if the change to \textbf is made before or after the \let instruction. Of course this may be considered as a silly example, but it gives the idea.
Indeed, \let freezes the meaning of the second token, in the sense that the first token (in this case \dosomething) assumes the current meaning of the second token (in this case \textbf). Later changes in the meaning of the second token wouldn't be reflected in the first token. This doesn't happen with either \newcommand strategy above.
The \let command has its uses, but it should appear very rarely in a document preamble, usually in the form \let\foo\relax for special purposes involving the redefinition of \foo.
Problem 3. In any case, without a rather deep knowledge of how LaTeX macros work, it's not advisable to use \let, in particular for modifying the behavior of a macro keeping its current meaning (see the documentation of the letltxmacro package for more information.
longarguments, i.e. a (implicit or explicit)\parinside the argument. If this is not an issue, than the 1st version is 'alright', the second one should be used with extreme care... and you stated already, that it's not possible to use 2nd version in a group – Jan 05 '15 at 00:50