Technical reasons for choosing an environment over a command form are that if the definition only involves setting up declarations then it never has to scan the content in advance, so list environments or longtable etc can start typesetting and shipping out pages before the end of the environment...