I expect the empty space to the right of the Button Bar is due to Juicebox reserving space for the Expand Button but your gallery sets showExpandButton="FALSE". I do not think you'd see the space if your gallery were to set showExpandButton="TRUE" instead.
Setting a Button Bar icon to FALSE should not result in empty space to the right of the Button Bar (this is, indeed, a bug) but, the way Juicebox has been designed, the Expand Button should be displayed (even though your gallery sets showExpandButton="FALSE").
Using the Splash Page to expand the gallery is, internally, no different to using the Expand Button and if either the Splash Page or Expand Button are being used, then the Expand Button (in its Close Gallery state) ought to be present to allow the visitor to close the expanded gallery. (At least, that's how I expect the developers envisioned this functionality.)
There is no way to have the Expand Gallery button present but hide the Close Gallery button. Likewise, if using the Splash Page.
Long story short, it's a bug but it's a known bug which has already been logged and will hopefully be fixed in a future version.
In the meantime, the workaround is to set showExpandButton="TRUE" (which is essentially what the bugfix will likely do anyway).
Also, with regard to your your first note, you could perhaps use JavaScript to add #expanded to your link but only on mobile devices. Maybe something like this:
<a id="link">Link goes here.</a>
<script>
var isMobile = /Android|BlackBerry|iemobile|iPad|iPhone|iPod|Nexus|Opera Mini|webOS|Windows Phone|WPDesktop/i.test(navigator.agent);
var linkSrc = 'http://www.example.com/index.html' + (isMobile ? '#expanded' : '');
document.getElementById('link').setAttribute('href', linkSrc);
</script>
Otherwise, for the Juicebox-Pro API suggestion, something like this might work:
<script src="jbcore/juicebox.js"></script>
<script>
var jb = new juicebox({
containerId: "juicebox-container",
galleryHeight: "400",
galleryWidth: "600",
showExpandButton: "TRUE"
});
jb.onInitComplete = function() {
var isMobile = /Android|BlackBerry|iemobile|iPad|iPhone|iPod|Nexus|Opera Mini|webOS|Windows Phone|WPDesktop/i.test(navigator.agent);
if (isMobile) {
jb.toggleExpand();
}
};
</script>
<div id="juicebox-container"></div>
Whatever mechanism you use to detect a mobile device, it will likely differ slightly from Juicebox's own logic which determines whether to use Small Screen Mode or Large Screen Mode but you should be able to get quite close and catch most cases.