Array Modifier does not work as expected
When editing objects in Object mode, particularly scaling it, the mesh data actually isn't changed - scaling operation was performed in non-destructive way. This means that while object is displayed in viewport as scaled (and for simple operations it behaves like that too), its default scale is considered to be the non-edited one.

When scale is applied this means new values are taken into consideration as default ones. Modifiers work as expected with default values of transforms (and not only modifiers), so to see intended result you should apply scale.

Note though that it's a good idea to apply transforms before proceeding to some actions with object, especially animation. Once you'll notice that it doesn't behave as expected and decide to apply transforms, it may be too late - objects won't be changed as you want them to. So plan what is expected to do with object first.

In case of your object, this is as follows. 

If scale is not applied

Given this snowflake:



If scale is applied

Everything becomes as expected:



To apply any kind of transforms, in Object mode press Ctrl+A and choose option from menu:





There are cases when applying transforms may be not desired, but in most cases it's better to apply scale and rotation first to avoid any kind of distortions and confusion later on.

Related articles:


Why is it important to apply transforms
Applying object transforms in wiki