For single files bzip2 gives very good compression. You can archive lots of files together in a .tar file, and then compress that using bzip2 to get good compression ratios. GNU's implementation of tar will do this all in one operation is you use the j option, e.g.
tar cjf myarchive.tar.bz2 files and directories to add ...
The only down side to using tar files over zip or rar, is that there is no "table of contents" written at the start (or end - whatever) of the file. This means that to get a listing of the contents of a tar file, the program needs to read through the whole file, which for large tar files can take a long time.
Apart from this (in fact partly because of it), tar files can do things zip and rar files aren't suitable for - they can be used on non-random access devices such as tape drives - tar stands for t
chive). tar files can also contains multiple versions of a file with a given name, and you can choose which one to restore from the archive.
Having said all that, if you're not in control of the formats (e.g. you're administering a website which distributes rar files for windows users), the coolness of tar archives doesn't help you much. HO hum.