The limit for personal storage tables in the 2003 and 2007 set of products is set by Microsoft to an arbitrary 20GB, assuming they are unicode format. The limit is a tradeoff against performance. The limited can be changed up or down by the user. The hard limit is 33TB.
The limit for an ANSI-format file in 2003 and earlier is 65k unique items (approx.), with an artificial limit of 2GB-1 based originally on the maximum file size for FAT16 with clusters other than 64k. You could go to 4GB-1 in FAT16 with 64k clusters, but random software would fall over when accessing such clusters.
For a unicode-format personal storage table in 2003 onwards, there is no index limit ("no" may be 4,294,967,296) and the maximum file size is, in NTFS, a theoretical 2**64 - 1 KB but Microsoft has implemented a hard limit of 2**44 - 64 KB.