This may be an odd answer, but... I believe that, there are no any good practical reasons to use "shall", "should", "may" and other modal verbs in requirements documents at all. All those verbs only make the documents harder to write and - most importantly - much harder to read. (And I'm convinced that poor readability is one of the top few reasons why requirements documents so often fail to clearly define what the software system is supposed to do for its stakeholders.)
Why use of "shall" is so common?
Well, as it was mentioned in other answers here, one possible reason is that this practice is simply borrowed from legal documents. Obviously, requirements do represent a contract with a customer, so it may feel natural to word them like other contractual documents - that is, in legalese. Well, we all know how people love to read legalese. :-)
Also some people find it useful to apply "must/should/may conventions" defined in RFC 2119 to software requirements. Why? Frankly, it beats me. In my humble opinion, it is a classic example of misusing a good idea. Those conventions might be useful when defining very technical protocols, interfaces, or other standards that allow different levels of compliance. But even in those cases I think it is not the most efficient way to achieve the goal. I'm sure it would be much easier for everybody if, instead of sprinkling the prose with all those capitalized SHALLs, SHOULDs, and MAYs, the authors would clearly demarkate each requirement and supply it with a MANDATORY|RECOMMENDED|OPTIONAL attribute.
I believe that software requirements shall not be written in legalese (unless you have some weird customer that requires that). I believe that any requirement statement is easier to write and read (and maintain) in present tense and active voice. Also I believe that "optionality level" is not a good intrinsic attribute for a software requirement. Each requirement must have a priority as its intrinsic attribute (which, for example, would help to decide whether implementation of a given requirement is mandatory, recommended, or optional for a given release).