Hi Paul,
I am sure you have seen this thread already: http://communities.netapp.com/message/20969#20969.
If not, then please have a look at it.
Fragmentation & reallocation are still a kind of a skeleton in NetApp's cupboard & frankly speaking, official documentation is either non-existent, or patchy.
Re snapshots:
To me, using just common sense, snapshots do increase fragmentation due to the very nature of WAFL - unless there are no / very few new writes. So if you require decent sequential read performance in a frequently changed volume with snapshots, running reallocate on regular basis could be good.
-p option is a must IMHO, as this is the only way to avoid inflating existing snapshot whilst reallocating.
Regards,
Radek