I have some experience with Octave and none with Scilab, so I'm not the best person to answer this, but I'll give you my $0.02 anyway.
My impression is that both offer a solid core. Octave is able to run many MATLAB programs that don't use specialist toolboxes with only minor modifications, while Scilab is MATLAB-inspired rather than a MATLAB clone. None of this matters if you're developing specifically for Scilab/Octave. There are some GUIs for Octave (I've used qtoctave in the past), but they are clearly inferior to the MATLAB GUI. Scilab appears to be doing better in that regard.
It might boil down to their equivalent of
toolboxes. For example Scilab has
Xcos (an alternative to MathWorks Simulink), while Octave did not have any Simulink equivalent last time I checked. Octave has a decent number of community-developed packages on
Octave-Forge, however. If you don't care about compatibility with the MATLAB language but just with its functionality, then Python with
the various SciPy components (including NumPy for matrices and Matplotlib for MATLAB-like plotting) might also be worth considering. The advantage is that you get a general purpose programming language which simplifies operations like I/O and interfacing with other software.