<p>I'd like to create a sparse file such that all-zero blocks don't take up actual disk space until I write data to them.  Is it possible?</p>

As in other Unixes, it's a feature of the filesystem.  Either the filesystem supports it for ALL files or it doesn't.  Unlike Win32, you don't have to do anything special to make it happen.  Also unlike Win32, there is no performance penalty for using a sparse file.
On MacOS, the default filesystem is HFS+ which does
not
support sparse files.
Update:
MacOS used to support UFS volumes with sparse file support, but that has been removed. None of the currently supported filesystems feature sparse file support.