Assume there is a bot who relays presence information of any user on the system to any other user on the system.
For this to work- it seems every user must be added to that bot's roster, correct?
Is this a problem- i.e. is there a limit to the max number of user's per roster?
You do not want to do that. This is not a scalable design. Having a roster for the bot with all presence of the server is the best way to create a deadly bottleneck as you scale.
Consider writing a native ejabberd module that intercept the packet you want and does the needed processing.