The server-side differences vary quite a bit from platform to platform.
In most cases, however, it is easier to write an application that assumes it runs in the root (at least in PHP and ASP.NET it is) and then set up separate sites/virtual directories for each.
From a user's perspective, telling them to go to
mysite.example.com is typically easier to remember than
www.example.com/mysite. There is no reason this must be so, but most people have it more or less ingrained to ignore everything after the
/ or, for that matter, before the main domain. As a more esoteric example, if you were to tell end users to go to
ww2.host.example.com/mysite what most people will actually remember is
example.com, their minds discarding the "trash".
The downside is, of course, that provisioning subdomains is kind of manual out of the box. You can script it up, of course, but in IIS or Apache, as well as most domain registrars it tends to be done by hand. So, you have to go to the effort of automating that (though I am sure there are some extant tools that do the trick).