It depends on how many streams you're hosting, what other software is also running on the machine, etc., but in general 2GB should be much more than enough.
Every server will be different, but just as an example, on my main dev server I'm currently seeing:
cc-control: 13M shared + 1M private = 14M
cc-appserver: 30M shared + 5x12M private + 1x4M private = 94M
cc-web: 20M shared + 2+1+1M private = 24M
cc-ftpd: 14M
cc-imaged: 33M shared + 4x1M = 37M
Total for Centova Cast: 183M
For ShoutCast2:
sc_serv: 43M shared + 6M per process
sc_trans: 139M shared + 10M per process
For IceCast:
icecast: 70M shared + 3M per process
ices-cc: 25M shared + 2.3M per process
So based on the above, say I had 20 ShoutCast servers running with sc_trans, I'd be using a total of about 183M + 43M + 139M + (6+10) x 20 = 685M of RAM.
In terms of memory utilization alone (ignoring CPU and network limitations), factor in, say, 100MB for the kernel and system applications, and you could host about 100 streams in 2GB of RAM using sc_trans+sc_serv, or 300 streams with IceCast/ices-cc, before you ran out of memory.