How to select array_agg(ARRAY[f1_date,ARRAY[f2_int,f3_decimal]])? There is an error about combining date and integer in ARRAY.
upd: added picture explaining where and how I plan to use array. The issue is db size. After transforming 3 colunms to multidimensional array I can save plenty of space. It will be 4M rows instead of 200M. Each row will have array with maximum 500 elements inside.

Arrays in Postgres share the same base element across all dimensions.
Array of anonymous records
You can build an array of anonymous records (as base type):
This is rather unwieldy though, as you cannot access subfields of anonymous records by name (names do not exist!). May be more practical to operate with well know types ..
Composite type as base type
Create a composite type and use it as base type for your array.
Table as base type
Any table can serve as composite type.
Textas common groundThe alternative is to cast all values to
textsince every data type can be cast totextand back in PostgreSQL and build amulti-dimensional array.For that you may be interested in aggregating multi-dimensional arrays. Consider the answer under this related question:
Selecting data into a Postgres array
In my experience there is often a better solution than to build complex arrays, though.