No, storage variables are not cleared when they go out of scope. In most cases, you shouldn't be declaring local storage variables regardless, and the compiler will give you a warning if you try to.
In most cases, if you want to use types like arrays locally, you should explicitly declare them as memory variables like:
bytes memory myVariable = "abcd";
Note that the storage of your contract is essentially unlimited, but writing to storage is extremely expensive. Clearing storage (i.e. setting a nonzero byte to zero) refunds some of the gas.
If you don't intend to use a variable outside of your current scope, there's generally no reason to write the variable to storage. Note that memory variables are passed by reference as well, not copied.