I think the workspace should be unlimited in size.
I mean why even have a limit?
The workspace could have a default size like it does now (which could actually be much smaller), but when a component is moved to the very edge of the workspace the workspace would get larger. So basically a dynamically resizing workspace.
This wouldn't be so hard to do either, when moving a component a comparison could be taking place to see if it is near the edge of the workspace if it is increase the workspace by so many squares. It's just a case of replacing the hard coded width and height with a variable which gets added too when a component gets near it.
I think it would be fairly simple making it work that way.