There are plenty of ways for an unprivileged user to slow down a system and running sync is far from being the more efficient. On the other hand, having the file systems data committed to disk is quite a legitimate request so forbidding users (and thus their processes) to do it would be excessive.
In any case, I disagree about your "unnecessary disk writes" statement. These writes are certainly necessary and will automatically happen after a small period of time anyway.
There is even no guarantee the sync call will do anything particular at all depending on its implementation. Calling sync, is, as the POSIX standard defines, only a "suggestion" for the OS to flush its file system caches, it doesn't necessarily force the flushes to happen immediately. More precisely, the calls ask the OS to schedule a cache flush but there is no guarantee it will happen before the already scheduled time although Linux implementation does wait for it to happen before returning.
Moreover, calling sync multiple times in a row would not slow down systems that much, as once the caches are flushed, if no process is actively writing to files the caches are empty so sync is a no-op.
Should you really want to prevent users to run sync on your system, you can just run these commands:
mv /bin/sync /bin/.sync
ln /bin/true /bin/sync
That would largely be unnoticed by users and has no negative effects except with people that just run sync then remove storage devices (eg: usb thumbdrive) without unmounting them, but these users were already acting foolishly anyway.
Note that I wouldn't recommend the previous /bin/sync link with /bin/true.
sync is certainly useful in some cases. For example if you fear a brutal shutdown (power shortage, system panic, ...) might happen shortly, that would help preserving the file systems content. This is what I call a legitimate request.