The main limitation of RiveScript (as far as RAM anyway) would be with the size of the brain (number of replies) rather than the number of concurrent users.
The amount of data stored (edit: stored in RAM) for each individual user is extremely small (it just stores the most recent 9 inputs and replies from them, which topic they’re in, and then any other user variables (name, age, etc.) that they’ve volunteered to your bot). The amount of RAM needed for the replies though scales linearly with the number of replies you have. I’ve tested using A.L.I.C.E.‘s brain in RiveScript and it works pretty well, for having some 40,000 responses or so. A RiveScript brain would typically be smaller in raw size than an AIML one, due to the way that RiveScript can consolidate tons of triggers down into just one or two (since the pattern format in RiveScript is like a regular expression, whereas in AIML you need one pattern for every little variation of the same question).
Also, RiveScript is largely a “read only” bot, as in once your RiveScript code has been read, the bot no longer needs to read or write your replies. This lends it towards being infinitely scalable horizontally (i.e. you could have a cluster of servers spread across multiple data centers, and have a shared NFS mount or similar where the bot can read its replies only as it starts up, and then each server would be autonomous from then on out). Edit: you could also keep your RiveScript replies in a database, and stream them in from a SQL query rather than reading files from disk, i.e. using stream() instead of loadFile().
But that’s probably true of other systems too, i.e. AIML bots could potentially be distributed across multiple servers as well, although I don’t know how that will play into how an AIML bot saves user data (IIRC, Alicebot Program D saves user variables as XML files on disk, which may raise complications with distributed servers). RiveScript has no built-in feature to save user variables and leaves that to the programmer to deal with; you could save/load them to disk for small bots or stick them in a PostgreSQL database for distributed bots.