With the SESSION keyword, the statement applies to all subsequent transactions performed within the current session.
Without any SESSION or GLOBAL keyword, the statement applies to the next (not started) transaction performed within the current session. Subsequent transactions revert to using the SESSION isolation level.
The use of the SESSION keyword is inappropriate here, as we only want to change the isolation level for the immediate next transaction.
Didn't add a test, since bug 53341 means that there's no way to read the current transaction's isolation level. (We could test that the session's isolation level hasn't changed, but a more useful test would be ensuring that the desired isolation level was actually applied.)