One fairly big problem you have here is that there are going to be zillions of consumer devices that expect memory cards and USB sticks to be FAT32 and nothing else.
They tend to be very conservative about what they support, and have hard or impossible to update software.
UDF on Wikipedia is interesting:
(EDIT: Wow, I didn't realise how much of it there is, and how bad my copy and paste is.)
* Maximum filename length: 255 bytes
* Allowable characters in directory entries: Any Unicode except NUL
* Maximum pathname length: 1,023 bytes
* Maximum file size: 16 EB
* Maximum volume size: 2 TB (hard disc) 8 TB (optical disc)
* Stores file owner: Yes
* POSIX file permissions: Yes
* Creation timestamps: Yes
* Last access/ read timestamps: Yes
* Last content modification timestamps: Unknown
* Disk copy created: Unknown
* Last metadata change timestamps: Yes
* Last archive timestamps: Yes
* Access control lists: Yes
* Security/ MAC labels: No
* Extended attributes/ Alternate data streams/ forks: Yes
* Checksum/ ECC: No
* Max timestamp granularity: unknown
But generally files are stored as a tree or some other recursive data structure. If these have a limit at all it's either deliberately imposed (e.g. the triple-indirect block in a v7 Unix inode) or arbitrary (maximum depth of a maximally unablanced btree that fills the volume).
Basically, you have to limit your device size if you want sane block ID semantics. Files can be infinite if you want.
Works on recent versions of Windows and OS X.