RT, that is absolutely what is going on but it's the underlying 6502 design that is more efficient in one direction:
(Note: Your code otuput shows that ">=" is more efficient than ">", not the other way around).
bcc is "<" so in the first example we're running the target code only if the inverse is true (>=)
bcs is is the inverse of bcc but they are not equal (pardon the pun), we've basically got two instructions that say "<" and ">="
Now if we want logic for "<=" or ">" we have to add another branch instruction beq ("=") to build it so it's always better to go with ">=" instead of ">" and "<" instead of "<=" when you have the option.
Compiler optimizations usually take advantage of the architecture too; here is a For loop example is from Virtual World BASIC (bB may have similar optimizations):
The for loop that uses step has three extra instructions over the for loop that does not use step - I was able to add the optimization because step requires multiple instructions (must use the accumulator to add or subtract compared to inc) as well as bounds checking to keep the for loop from falling through which also isn't necessary without the step kepword:
L_43 ;---assignments & functions: _43 for i= 91 to 13 step -2
lda #91; -- Init For Loop
sta i; -- Init For Loop
L_44 ;---assignments & functions: _44 for j = 7 to 12
lda #7; -- Init For Loop
sta j; -- Init For Loop
;.... looped code here
L_46 ;---assignments & functions: _46 next j,i
l1_For_Loop_ENDL_44; done with loop
bcc l0_For_Loop_ENDL_43; kick out if step value overflows
l0_For_Loop_ENDL_43; done with loop