В том, что su запускает от имени нужного юзера шелл, а sudo - любую заданную команду. Т.е. если тебе нужно выполнить серию команд от рута, то ты можешь либо один раз вбить su с паролем рута и дальше работать как обычно, либо перед каждой командой командой вбивать sudo.
И ещё, при твоей конфигурации можно выполнять команды от другого юзера, даже не зная пароля этого юзера.
Сравни:
user1 ALL=(skype) NOPASSWD:/usr/local/bin/skype.sh
user2 ALL=(skype) NOPASSWD:/usr/local/bin/skype.sh
при этом юзер skype пароля не имеет
Как ты такое сделаешь с su?
sudo намного гибче su. Например можно определенным группам или пользователям разрешить запускать те или иные команды, при этом одним можно ращрешить это делать без пароля, у других пароль спрашивать а третьим строго настрого запретить это делать. А su как уже было сказано просто пускает рутовую консоль.
Если ты про --command, то это не то же самое. sudo command запускает command, а su -c command запускает /bin/sh -c command. Чтобы уловить разницу, попробуй запустить systemsettings из кде4 из рутовой консоли или su -c, он у тебя в обеих случаях вылетит с "Cannot find the D-Bus session server". Если же запускать через sudo, всё будет нормально.