Update:
... the middle part is not wider/longer than the others, it just has more points...
SeedRandom[1]
{part1, part3} = RandomInteger[10, {2, 10, 10}];
part2 = RandomInteger[10, {20, 30}];
i = 1;
{lp1, lp2, lp3} = ListPlot3D[#, DataRange -> {{0, 1}, {0, 1}, {0, 10}},
InterpolationOrder -> 3, PlotStyle -> {Blue, Red, Green}[[i++]],
ImageSize -> 300, BoxRatios -> {1, 1, 2/3}] & /@ {part1, part2, part3};
Row[{lp1, lp2, lp3}]

Translate
lp2
and lp3
and Show
together:
Show[lp1,
Graphics3D[GeometricTransformation[lp2[[1]], TranslationTransform[{1, 0, 0}]]],
Graphics3D[GeometricTransformation[lp3[[1]], TranslationTransform[{2, 0, 0}]]],
PlotRange -> All, ImageSize -> 500]

Original post:
You can use PadRight
to combine the three parts. For example,
{part1, part3} = RandomInteger[10, {2, 5, 5}];
part2 = RandomInteger[10, {5, 12}];
MatrixForm[MatrixForm /@ {part1, part2, part3}]

combined = Join @@ PadRight[{part1, part2, part3}, Automatic, -1];
MatrixForm[combined]

ListPlot3D[combined, PlotRange -> {0, 10}, InterpolationOrder -> 3,
ClippingStyle -> Red, BoxRatios -> {1, 1, 1/2}]
