Been scratching my head for a couple of hours trying to figure out why this was happening when my template file was identical. Added your code to my child functions.php file and it has worked a treat! Thanks!

In functions.php, there is a method twentyeleven_body_classes() since Twenty Eleven 1.0.

This one is adding the css class .singular except for the home page and the page templates showcase and sidebar-page.
The easiest is therefore to add your own page template as another exceptions. Ex.: I did it for my page-of-posts

/**
* Adds two classes to the array of body classes.
* The first is if the site has only had one author with published posts.
* The second is if a singular post being displayed
*
* @since Twenty Eleven 1.0
*/
function twentyeleven_body_classes( $classes ) {

this works, and would be a good option within a cloned, renamed copy of the theme. as it stands, it ignores the importance of creating a child theme. as Twenty Eleven is the default theme of wp3.4, keeping it unedited can be important in case of serious problems. without a child theme, you are also having the risk of accidentally updating your theme and losing the customisations.

answered in the WordPress.org support forum; possibly use is_page() in the conditional statement. however, there would be other ways of controlling the width of pages without sidebar…
good luck and cheers, alchymyth

What I don’t get is why sidebar-page.php works but if you make a duplicate with a new filename and template name it doesn’t work.

It shouldn’t be necessary to use the workaround you posted here. I’m really annoyed with WordPress for this one. They must do something similar to what you did somewhere. They need to update their instructions on making new template pages.

I partly agree – it seems that the default theme is not meant to be easy but more a showcase of what is possible, or something to stretch the user’s patience. A read-me instruction manual for the Twenty Eleven would definitvely be a great idea.