В первом случае первая итерация цикла выполняется вне цикла (отсюда и больше размер). Во втором варианте все итерации выполняются в цикле.
Код внутри цикла один и тот же. Скорость исполнения будет одинакова.
Разница только в том, что первый вариант на несколько байт больше размером.
Кстати, gcc показывает идентичный код в обоих случаях.
Предлагаю еще такой вариант:
int str_cmp1(const char *s, const char *t)
{
while (*s == *t++ && *s != '\0') ++s;
return *s - *t;
}