Is the client using widgets or are the sidebars in code?
Either way, you can wrap your sidebar code in IF statements in sidebar.php Some themes have more than one sidebar file.
if ( is_page( array('about', 'contact', 'another-page', 'a-fourth-page'))) {
===== do stuff ===========
}
I realize that code is not dynamic. If you define say 3 different sidebar layouts, you could create a custom field on each page called Sidebar, and assign a value of Sidebar1, Sidebar2, or Sidebar3.
Then your sidebar code would test for the existence of the custom field and display the sidebar accordingly. When the client adds new pages, they would create a custom field for the sidebar they wanted to display. Thus it becomes dynamic.
In sidebar.php:
$sidebar = get_post_meta($post->ID, 'Sidebar', true);
if ($sidebar == 'Sidebar1') {
==== sidebar 1 display code here ====
} elseif ($sidebar == 'Sidebar2) {
==== sidebar 2 display code here ====
} elseif ($sidebar == 'Sidebar13) {
==== sidebar 3 display code here ====
} else {
======== default condition code here =====
}
They do need you to create new sidebars if an altogether new sidebar layout is added, but doing that is beyond the range of most clients anyway.