According to the documentation, this is working as designed:
"Whitespace is stripped from the following places: after the opening tag, around the [else /] tag, and before the closing tag. This allows you to create readable nested conditional code without worrying about the added whitespace. If you actually wanted to keep whitespace here, you need to break your code into multiple tags, or if HTML is enabled, you can use the appropriate entity code."
In this case, you would need to put the no-width space character before your new line.
Code:
[if="{{{2|}}}"]​
|- Something else
[/if]
This method can also cause spacing issues within your table because the non-width space will be output.
Something you may not be aware of is that the space around table data is trimmed anyway, so you don't even need to use the aforementioned method. You can put the line break OUTSIDE the IF tag, without the line break rendering.
EDIT: However, this was a relatively arbitrary change we made to the conditional code to make it more readable for editors. This actually made it harder to use in a number of situations, such as yours. Since it's Working as Designed, we can't consider it a bug, but we will be making the change to sacrifice readability for usability.
In
vault/extensions/parser/parser_class_core.php, find and delete:
Code:
$ifelse[0] = trim($ifelse[0], "\r\n\t");
$ifelse[1] = trim($ifelse[1], "\r\n\t");