Sometimes no-op clauses can make your code more readable.
That can be a matter of opinion, but here's an example.  Let's suppose you've created a function that works by taking two unix paths.  It calculates the 'change path' needed to cd from one path to another.  You place a restriction on your function that the paths must both start with a '/' OR both must not.
function chgpath() {
    # toC, fromC are the first characters of the argument paths.
    if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
    then
        true      # continue with function
    else
        return 1  # Skip function.
    fi
Some developers will want to remove the no-op but that would mean negating the conditional:
function chgpath() {
    # toC, fromC are the first characters of the argument paths.
    if [[ "$toC" != / || "$fromC" == / ]] && [[ "$toC" == / || "$fromC" != / ]]
    then
        return 1  # Skip function.
    fi
Now -in my opinion- its not so clear from the if-clause the conditions in which you'd want to skip doing the function.  To eliminate the no-op and do it clearly, you would want to move the if-clause out of the function:
    if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
    then
        cdPath=$(chgPath pathA pathB)   # (we moved the conditional outside)
That looks better, but many times we can't do this; we want the check to be done inside the function.
So how often does this happen?  Not very often.  Maybe once or twice a year.  It happens often enough, that you should be aware of it.  I don't shy away from using it when I think it improves the readability of my code (regardless of the language).