No, that one is correct. %[[-]] means a set of "[" and "-", followed by a (non-set) "]". It is not possible to have a range which ends with "]". The workaround is to make the range end with , and put "]" in separately (a generalization of the workaround you mention).
not sure if that is buggy, but edge case for sure. should the - be treated as range always unless it is at the beginning or end?
Yes, but in this case it is at the end, because it is followed by ] (the end marker).