Right, found the thing I needed to change.
From this
Code:
dirSec.AddAccessRule(new FileSystemAccessRule(@"sch4290\" + user, FileSystemRights.FullControl, AccessControlType.Allow));
to this
Code:
dirSec.AddAccessRule(new FileSystemAccessRule(@"sch4290\" + user, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
And now it gives the right permissions to all child leaf objects and container objects. 
Oh, and remember - the share also has to have write permissions for the group which the users reside else all the files will come up as read only.