Currently if the basedir attribute is set, then a include-all fileset is created at that directory. Arguably, this is "supposed" to happen, but it creates some bugs that are hard to track down, in the event that you do something like this for your TarTask:
<tar compression="gzip" destFile="${tarfile}" basedir="${build.target.dir}">
<fileset dir="${build.target.dir}">
<include name="app/**"/>
<exclude name="app/cache/**"/>
</fileset>
</tar>
In that case the app/cache directory will be included, because a fileset that includes it has been created automatically.
The appropriate fix - to bring this inline with documentation - for this is probably to only create this other fileset if there is none specified in the tar task.