You can use a restricted shell to contain the user in that user's directory. There's one rssh shell out there that allows only scp and sftp. You'd have to compile it. I have enver used it, so I don't know how well it works.
If you have many users who need to be set that way, you may want to configure an anonymous ftp server. That way everyone can log into the ftp directory using "anonymous" as a the user name. That way users will have a login to the ftp server, but not a user login.
You can also transfer the files somewhere else. If you have only one user that needs files, rather than you giving him a login into your box, have the user give you a login into the user's workstation and automate a file transfer to it via script. Or if you have many users, you can designate a workstation as a repository and transfer all files there. That way, you don't care what happens to the workstation.
To restrict ftp we usually just change the ftp daemon to something like proftpd which allows you to configure different option for different user/directories.