Of course it's legal. There's nothing special about a lawyer, or the documents he produces, which magically makes them legally binding or not. HOWEVER, just as with software development, legal documents have a language and grammar associated with them which is significantly more specific and precise than the every day language you use, typically called legalese. The difference between a contract written up by a lawyer and a contract written up by you or someone else will be in the phrasing, word usage, and even grammar. This can drastically change how the document is interpreted and thus how binding it is.Which reminds me, is it even legal to use contracts that weren't made by lawyers? I mean, being legal binding and such, I'd think it's something that should only be handed to the relevant professionals.
There ARE some generic online contracts or similar that you can adapt to your needs. But if you're going to be doing consulting/contract work for a while then it pays (always) to go to a lawyer and have them draw up an appropriate set of documents for you. They will typically know all of the questions to ask you in order to ensure the contract is bullet proof for both parties. Something that a generic contract found on the web typically isn't.
Your average "off the internet" contact is not a very good document over all, its necessarily so though: A generic contract cannot deal with the specifics of the situations you will encounter in most contracts. By having a lawyer produce a base contract for your company, and more specific ones as needed, you not only get a document that is written using the language and grammar of the law, but you additionally get the expertise of the contract lawyer. Said lawyer will know the appropriate questions to ask in order to assist you in producing a contract that represents the needs of you, and your customers. Furthermore, its important to understand that state and country laws are not uniform. Thus if you are working with a client in California and you're in Maine, the laws between the two are different and what may be legally binding in one may not be in the other. It is important to ensure that both parties understand which legal system is being used to apply the contract, and even where legal disputes will be resolved (arbitration, etc). These are the kinds of details most generic "internet" contracts do not include.
As always, IANAL, and nothing I say constitutes legal advise. However, you can usually speak to most contract lawyers about these issues for free (at least once), and find out how much it would cost for them to draw up a contract (usually not a whole lot, maybe a few hundred dollars).
This is not uncommon in a lot of different types of contracts, including software development. As long as the document clearly spells out how the work would be paid for, ownership, and requirements of any "additional" items, its usually perfectly fine. However, the artist should ensure they have the ability to deny the request without voiding their contract. Even then, you should still consult a lawyer about the contract as well, because a lawyer can explain to you, in plain English, what the contract is actually demanding of you. Remember, legalese is not like British or American English, its a very specific language and because of that many words have DIFFERENT meanings than your everyday usage of them. Thus a few words interpreted differently can vastly change what a document actually says.
On a related note, what would artists say if there was a clause allowing for the client to ask more assets without need to filling out a full new contract? Assuming such a clause makes it explicitly clear under which conditions this would be, including the amount of extra payment, the amount of time that must be allowed to do the job, etc. (and assuming those conditions are designed to match the ones from the original assets)