Oh Absolutely Junglefish!
As I said "I have noticed else_if not working as well" and if you want to get an official response then it is always easier to go to http://open.silverstripe.org/ and raise a ticket!
IMHO if you have such a large complex if / else if I'd think it was too complex and try and achieve it slightly differently using different page types, includes or involving the controller a little more. Or you could do the following...
<% if InSection(home) %>
home
<% end_if %>
<% if InSection(about) %>
about
<% end_if %>
<% if yyyyyyyyyyyyyyyyyyyy %>
subpage
<% end_if %>
etc..
or without the formating if you have a small amount of code inside each if (and if not, perhaps including templates might help)...
<% if InSection(home) %>home<% end_if %>
<% if InSection(about) %>about<% end_if %>
<% if yyyyyyyyyyyyyyyyyyyy %>subpage<% end_if %>
etc..
And yes that also has some flaws... Personally I'd recommend trying to do this work without such a large/complex logic in the template. There are many other ways to do things in silverstripe, as yet another suggestion you could extend page to add to the $db a field MyCustomText and then for each of these page types you can edit the text in the cms and then you only need $MyCustomText in the template.
Just to make it clear I agree that else_if is buggy, but I am also suggesting that there are other, perhaps better ways, to get the same result.